CakePHP3.4 と MySQL を使用しています。
SQL
1CREATE TABLE `orders` ( 2 `ID` char(10) not null, 3 `name` varchar(255) not null,
今、上記のテーブル orders から、ID の先頭が $prefix であるデータを抽出したいのですが、like() がうまく機能してくれません。
PHP
1$prefix = 'A'; 2$orderTable = TableRegistry::get('Orders'); 3$orderQuery = $orderTable->find()->where('ID' => function($exp, $q) { return $exp->like('ID', "$prefix%"); })->all();
ID に対する無名 function 内では$prefix がスコープ外のため見えていないので、PHP エラーとなっているのはわかっています。
function に対してパラメータとして $prefix を与える方法はないのでしょうか?
※CakePHP3 クックブックを見ても、これらのサンプルコードでは like() などのパラメータを動的に変化させるような記述は見当たらないようです。
補足:一応次のように記述をすれば意図通りに動くのはわかっているのですが、ORM らしい書き方がないのかと思い質問した次第です。
PHP
1$prefix = 'A'; 2$cond = []; 3$cond[] = ["ID LIKE '$prefix%"]; 4$orderTable = TableRegistry::get('Orders'); 5$orderQuery = $orderTable->find()->where(cond)->all();
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/24 07:46