CodeIgniter のアクティブ レコード クラスを使用してデータベースにクエリを実行しようとしています。テーブルに多数のブログ投稿が保存されています。クエリは、特定のカテゴリが割り当てられているすべての投稿を引き出す検索機能用です。したがって、表の「カテゴリ」列には、政治、歴史、社会学のように、コンマで区切られた順不同で、その投稿のすべてのカテゴリのリストが表示されます。等
ユーザーが政治と歴史を選択した場合、これらの両方のカテゴリを持つすべての投稿のタイトルが返されます。
したがって、クエリされるカテゴリのリストは配列 $cats になります。私はこれがうまくいくと思った -
foreach ($cats as $cat){
$this->db->like('categories',$cat);
}
これを生成することにより:
$this->db->like ('categories','Politics');
$this->db->like ('categories','History');
(どちらが生成されますか-「WHERE カテゴリ LIKE '%Politics%' AND カテゴリ LIKE '%History%')
しかし、うまくいきません。最初のステートメントしか生成しないようです。私が推測する問題は、チェーンされた各クエリで列名が同じであることです。これに関する CI ユーザー ガイド ( http://codeigniter.com/user_guide/database/active_record.html )には何もないようです。これは、チェーンされた各ステートメントが異なる列名用であると想定しているように見えるためです。 .
もちろん、1 つのステートメントで連想配列を使用することはできません。重複するキーを含める必要があるためです。この場合、すべてのキーを「カテゴリ」にする必要があります...