Download the PHP package haikara/sequel-builder without Composer

On this page you can find all versions of the php package haikara/sequel-builder. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package sequel-builder

sequel-builder

SQL文の組み立てをおこなうライブラリ。
プレースホルダーを含むSQL文を組み立て、埋め込む値を保持する。
SQLの文法に近い書き心地を目標とする。

利用方法

以下のサンプルではPHP8.0以上を前提とする。

ビルダーのインスタンス化と、SQL文の取得

基本クラスとして、Select、Insert、Update、Deleteが存在する。
いずれもBuilderクラスを継承しており、以下のように用いる。

カラムの指定

SELECT文で取得するカラムを指定したい場合、columnsメソッドに可変長引数で指定する。

WHERE

WHERE句による絞り込みは、whereメソッドにcallableな値を渡す形で記述する。
callable値の実行、引数にRulesクラスのインスタンスが渡されるので、必要なメソッドを呼び出したうえでreturnする。

Rulesクラスに備わるメソッドは様々なので、以下では簡易な例を紹介する。

テーブルの結合

LEFT JOINなど、テーブル結合の記述。
ON句での結合条件の記述は、WHEREと同じくcallableとRulesクラスを用いる。

GROUP BYとHAVING

HAVINGの使い方はWHEREとまったく同じになる。

ORDER BY

LIMITとOFFSET

limitメソッドとoffsetメソッドがあり、別々に指定できるが、
OFFSET値は、limitの第二引数にまとめて渡すこともできる。

ページング

ページネーションに必要なLIMITとOFFSETの値を算出して指定する。

全件数のカウント

MySQLのFOUND_ROWS関数は非推奨になったので、COUNT関数を用いて全件数を取得する必要があるが、
レコードを取得するするSQLと全件数を取得するSQLは、似たような記述ではあるものの共通化が手間なので、
手軽に全件数を取得するSQLを組み立てる方法としてSelect::buildFoundRowsを用意している。

Rulesクラスの詳細

whereメソッドなどで用いるRulesクラスのメソッドを詳しく紹介する。

条件分岐

whenメソッドで条件分岐を記述できる。これはSQLの構文ではなく、
PHPのif文によって動的に検索条件を組み変える際の、より良い代替手段として用意されている。

whenの第一引数に条件式(bool値)を渡し、第二引数にcallableを渡す。

OR

Rulesクラスの同じオブジェクトに対して指定した条件は、すべて並列にANDで繋がれる。
ORを書きたい場合は、anyメソッドを用いて、別のRulesオブジェクトに指定する形になる。Rulesのネスト。

INとサブクエリ

サブクエリ

サブクエリが静的なSQLなら文字列で記述しても問題ない。
値のバインドを伴う動的なSQLではSQL::selectを使う必要がある。

WHERE ... INにサブクエリを用いる

inメソッドの第二引数に配列ではなくSelectクラスのオブジェクトを渡すことで、サブクエリを用いた絞り込みができる。

比較にサブクエリを用いる

サブクエリの結果を値の比較に用いる。

テーブル結合にサブクエリを用いる

カラム指定にサブクエリを用いる

CASE文

下記のようなクエリの組み立てを想定する。

CaseStatementを用いてCASE文を記述する例

ビルダーの機能だけで組み立てるので安全だが、可読性に難がある。

プレースホルダを含むCASE文の文字列を渡すパターン

INSERT

通常のINSERT文

ON DUPLICATE KEY UPDATE

ユニークキーなどの制約に引っかかることでINSERTに失敗したら、代わりにUPDATEを実行したい場合がある。
SELECTで存在チェックをしてPHP側で条件分岐を書いてもいいが、ON DUPLICATE KEY UPDATEを用いる方法もある。
これにより「あればINSERT,なければUPDATE」の動きを、ひとつのSQLで済ませることができる。

多対多の中間テーブルに対して繰り返し登録・更新をおこなうような処理で役に立つかもしれない。

BULK INSERT

Insert::valuesを続けて呼び出すことで、複数のレコードを一括登録できる。

UPDATE

UPDATEの条件はSELECTと同様、whereメソッドを呼び出すことで記述する。

DELETE

DELETEの条件もwhereメソッドにcallableを渡し、Rulesクラスを用いる。


All versions of sequel-builder with dependencies

PHP Build Version
Package Version
Requires php Version >=8.0.0 <8.4.0
ext-mbstring Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package haikara/sequel-builder contains the following files

Loading the files please wait ....