CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
2024/08/25
CakePHP4のクリエビルダーを使用して OR条件を AND条件でつなぐ SQL文を作る方法
CakePHP4のクリエビルダーを利用して、下記のように OR条件を AND条件でつなぐ SQL文を生成する方法をお伝えします。
|
1 2 3 4 |
select * from users where ( pref = "東京" or pref = "大阪" ) and ( age = "20代" or age = "30代" ); |
CakePHP4のクリエビルダーを使用して OR条件の SQL文を生成する方法
まず初めに、OR条件の SQL文を生成する場合の記述方法を解説します。
OR条件を設定する場合は、下記のように「or」をキーとして条件を指定します。
|
1 2 3 4 5 6 7 |
$conditions = [ "or" => [ "pref" => "東京", "pref" => "大阪" ] ]; $users = $this->Users->find()->where($conditions); |
生成される SQL文は以下のようになります。
|
1 2 |
select * from users where ( pref = "東京" or pref = "大阪" ); |
CakePHP4のクリエビルダーを使用して OR条件を AND条件でつなぐ SQL文を生成する方法
OR条件が一つの時は上記の記述方法で問題ありませんが、下記のように OR条件を AND条件でつなぐ場合はどうすればいいでしょうか?
|
1 2 3 4 |
select * from users where ( pref = "東京" or pref = "大阪" ) and ( age = "20代" or age = "30代" ); |
正解は下記のように、OR条件の変数を 2つ作成し、その条件を 2つの「where()」句をつなげて記述します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$conditions1 = [ "or" => [ "pref" => "東京", "pref" => "大阪" ] ]; $conditions2 = [ "or" => [ "age" => "20代", "age" => "30代" ] ]; $users = $this->Users->find()->where($conditions1)->where($conditions2); |
「where()」句を 2つつなげるという記述方法がなんとなく無理やり感を感じてしまいますが。
参考サイト:CakePHP4 Cookbook
参考サイトは下記になります。
オフィシャルの Cookbookですが、今回紹介した内容は明確に書かれていませんので、記事にしてみました。
CakePHP4 Cookbook クリエビルダー
https://book.cakephp.org/4/ja/orm/query-builder.html
CakePHP4の関連記事
CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法CakePHP4系でJSONレスポンスの処理ではwithStringBodyを使う。3との違い解説
CakePHP4、CakePHP5の「warning: DebugKit is disabling...」の対処方法
MySQL+CakePHPのdate型、datetime型項目は「2999-12-31」までしか扱えない
CakePHP4のFrozenDateで1ヵ月前、先月、今月1日、来月末の日付などを算出する方法
CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
CakePHP4のController内でViewテンプレート、レイアウトの変更設定を記述する方法
CakePHP4から外部のデータベースにアクセスする方法解説
CakePHP4の数値項目は「like %10%」の部分一致検索(find select)はできない
その他の「CakePHP4」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法
CakePHP3でcomposerを使ってパッケージ(ライブラリ、プラグイン)をインストールする方法の解説。PHPを使うのはCakePHP3が初めてというような方への使い方から解説。
-
-
CakePHP4の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説
CakePHP4で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定しそれを読み込み判別する。
-
-
CakePHP 2.3 Search Pluginで検索処理 その1設置方法
CakePHPの検索プラグイン Search Pluginの設置方法と基本的な検索処理の解説です。
-
-
CakePHP4、5のユーザ認証でID、PASS以外の削除フラグなども条件加える方法
CakePHP4系、5系ではAuthenticationを使用してログイン認証を行う。その認証でID、PASS以外の削除フラグなどの条件を加えたいときの対応方法について解説。
-
-
CakePHP 2.3でファイルのアップロード処理を作る
CakePHPでプラグインを使わないファイルアップロード処理を解説します。簡単です。DBにファイルを格納する方法も。
-
-
CakePHP3のcontroller内でテンプレート、レイアウトを変更する際の指定方法
CakePHP3でテンプレートファイルやレイアウトファイルをデフォルトのものから別のものに変更したい場合の指定方法を解説。
-
-
URL短縮サービス「TTTオンライン(https://ttt.onl)」公開
URL短縮サービス「TTTオンライン(https://ttt.onl)」を公開。メールやSNSでは使いにくい長いURLを短いURLに変換するサービス。QRコードも。Google URL Shortenerが2019年3月にサービス終了。
-
-
CakePHP4系でJSONレスポンスの処理ではwithStringBodyを使う。3との違い解説
responseの値を指定する方法は3系では「body」だが、4系では「withStringBody」になりる。加えてJSON形式なら「withType」で指定するなど4系では結構異なる処理がある。
-
-
CakePHP5系でDeprecatedを回避しfindListでキーと値のカラムを指定して取得する方法
CakePHP4のfindListでキーと値のカラムを指定してテーブルにアクセスする方法がCakePHP5では「Deprecated(非推奨)」となった。推奨の記述方法を解説。
-
-
CakePHP2、CakePHP3、CakePHP4、CakePHP5のバージョンを調べる 2つの方法
CakePHPのバージョンの調べ方2点を紹介。CakePHP3~CakePHP5は共通だが CakePHP2はフォルダ構成が異なるためコマンドのパスもオプションも異なる。