こちらの参考サイト様をもとに、FriendsOfCake/search
プラグインを使って複数語のAND検索をしたいのですが、
うまく検索が動かず全てのデータが取得されます。
title、content、tagの3つのカラムから検索したいです。
$word
が上手く渡せていないのだと思いますが、どのようにすればいいかわかりません。
$word = ['title' => $word];
のように配列にしてみましたがやはり動きません。
単一のワードなら作動しますが、プラグインの仕様を理解できず、カスタムまでうまく扱うことができません。
何卒、ご教授頂ければと思います。
よろしくお願い致します。
php
1//Controller 2$word = 'りんご みかん ぶどう'; 3$query = $this->Posts 4 ->finder('search', ['search' => $word]);
php
1//Table 2public function searchConfiguration() 3{ 4 $search = new Manager($this); 5 6 $search 7 ->find('wordSearch'); 8 return $search; 9} 10 11public function findWordSearch (Query $query, array $options) 12{ 13 $fields = [ 14 $this->aliasField('title'), 15 $this->aliasField('content'), 16 $this->aliasField('tag') 17 ]; 18 19 $words = preg_split('/[\s,]+/', $options['word']); 20 21 foreach ($words as $word) { 22 23 $opt_key = []; 24 25 foreach ($fields as $field) { 26 $opt_key[] = [ 27 $field.' LIKE' => '%'.$word.'%' 28 ]; 29 } 30 31 $query->where([ 32 'OR' => $opt_key 33 ]); 34 } 35 return $query; 36}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/23 03:36