Cakephp3にてブログサイトを作ろうと考えています。会員制の投稿サイトでユーザー登録して
記事を投稿できるサイトです。
環境:
php:7.1.1
Apache/2.4.25 (Win32)
cakephp:3.2.11
MySQL:10.1.21-MariaDB
テーブル:
Usersテーブル:ユーザー情報
Column:username 記事の作者のユーザー名
Articlesテーブル:記事情報
Column:title 記事のタイトル、content 記事の内容
上記テーブルから「username」「title」「content」の3つのいずれからから曖昧検索で得たキーワードに
合致するレコードを取得できように下記のようなコードを書きました。
public function find() { -中略- $find = Null; //検索キーワード if($this->request->query('word') != null) { $find = $this->request->query('word'); //viewから得た検索キーワードを受け取る $query = $this->Articles->find() ->contain(['Users']) ->where([ 'OR' => [['title like ' => '%'.$find.'%'], ['Users.username like ' => '%'.$find.'%'], ['content like ' => '%'.$find.'%']], ]);
しかし、Googleにあるように、検索欄に「日本 東京」とすると、検索条件が「日本」and「東京」となるように
空欄を入れて、複数のキーワードでand条件で検索したいと思いましたが、どのようにすれば良いかわからず、
困っている状況です。
検索キーワードをexplode()関数を使って、分割して配列として格納するとか、何かしらwhere句と検索キーワードを
forreachでループさせるという方針でできるかもということはわかったのですが、具体的な方法がわからず、
良い方法を教えて頂けないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/21 12:56
2017/04/21 13:18
2017/04/22 02:36