2017-07-29 13 views
0

を働いていないキーワードを検索:複数持つ単一の列にCakePHPのクエリFIND_IN_SET私は列のデータを任意のキーワードマッチを持つ列からすべてのレコードを検索したい

列に単一の検索キーワードを検索する場合は、カンマで区切られた正常に動作しますコード以下のような値:CakePHPの3.4バージョン

$posts = TableRegistry::get('Posts'); 
       $search_keywords = array_filter(explode(' ', $search_string)); 
       $option = [ 
         'contain' => false, 
         'conditions' => [ 
         "find_in_set('New', Posts.title)", 
         ], 
         'order' => ['Posts.created DESC'] 
        ]; 
     $allpost = $posts->find('all',$option)->toArray(); 

注:

$search_keyword = "New car in new delhi"; 
:私は、文字列からすべての単語は、列のタイトル、その持っていない必須カンマで区切られたレコードを検索する必要がありますしたいです

ので、私は、コードは以下のようになりたい:事前に

$search_keyword = "New car in new delhi"; 
$search_keywords = array_filter(explode(' ', $search_string)); 
       $option = [ 
         'contain' => false, 
         'conditions' => [ 
         "find_in_set({$search_keywords}, `Posts`.title)", 
         ], 
         'order' => ['Posts.created DESC'] 
        ]; 
     $allpost = $posts->find('all',$option)->toArray(); 

大感謝!

答えて

0

私は解決策が見つかりました:

$search_string = "New car in new delhi"; 
$option = [ 
         'contain' => false, 
         'conditions' => [ 
         "MATCH (title) AGAINST ('$search_string')" 
         ], 
         'order' => ['Posts.created DESC'] 
        ]; 
     $allpost = $posts->find('all',$option)->toArray(); 
+0

してください、** _史上_ **、それが可能SQLます直接クエリに(ユーザー)データを挿入することはありません:

まず、コードの下に追加の列フルテキストインデックスを作成します注射脆弱性! ** _常に_ **安全な 'key => value'条件またはバインディングを使用してください! ** https://book.cakephp.org/3.0/en/orm/query-builder.html#sql-injection-prevention** – ndm

+0

ありがとうございます。ケーキの構文でこのクエリを書く方法を教えてください。 –

+0

リンクを確認してください。あなたの大文字小文字を正確に示す例があります。 – ndm

関連する問題