cakephp3を使用して、複数キーワードの検索機能を作成しようとしております。
https://teratail.com/questions/73332
こちらの質問を参考に実装をしていたのですが、こちらですと結果がA and Bになってしまいます。
A or Bになるようにするためにはどのような実装すれば良いか分からない状況です。
該当のソースコード
if (strlen($search['keyword'] ?? null)) { $keyWord = explode(' ', $search['keyword']); foreach ($keyWord as $row) { $this->Products->find()->where([ 'OR' => [ ['Products.product_name LIKE' => '%' . $row . '%'], ['Products.catch_copy LIKE' => '%' . $row . '%'], ['Products.product_description LIKE' => '%' . $row . '%'], ], ]); } }
試したこと
cook bookを読んで、クエリビルダでorをし指定したりしたのですが、意図した動きにはなリませんでした。
$this->Products->find() ->where(function (QueryExpression $expr) use ($search, $query) { if(strlen($search['keyword'] ?? null)) { $keyWord = explode(' ', $search['keyword']); foreach ($keyWord as $row) { $expr->or([ ['Products.product_name LIKE' => "%" . $row . "%"], ['Products.catch_copy LIKE' => "%" . $row . "%"], ['Products.product_description LIKE' => "%" . $row . "%"] ]); } } return $expr; });
お手数ではありますが、何か良い方法がございましたら教えていただけますでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/27 03:17