名の名前の任意の組み合わせが特定の検索語に一致するユーザーテーブルからすべてを選択するクエリを生成しようとしています
$select = $select->where('last_name LIKE ?', '%'.$term.'%')->orWhere('first_name LIKE ?', '%'.$term.'%')
->orWhere("CONCAT(first_name,' ', last_name) LIKE ?", '%'.$term.'%')
->orWhere("CONCAT(last_name,' ', first_name) LIKE ?", '%'.$term.'%');
別のwhere句で指定されている、満たす必要のある別の条件があります
$select = $select->where("deleted = 0 AND scholar = 0");
次のSQLステートメントが生成されます
SELECT `user`.* FROM `user` WHERE (last_name LIKE '%frank%') OR (first_name LIKE '%frank%') OR (CONCAT(first_name,' ', last_name) LIKE '%frank%') OR (CONCAT(last_name,' ', first_name) LIKE '%frank%') AND (deleted = 0 AND scholar = 0) ORDER BY `date_created` desc LIMIT 25
scholar = 1の行を取得するため、これは目的の結果を返しません。
クエリは
SELECT `user`.* FROM `user` WHERE ((last_name LIKE '%frank%') OR (first_name LIKE '%frank%') OR (CONCAT(first_name,' ', last_name) LIKE '%frank%') OR (CONCAT(last_name,' ', first_name) LIKE '%frank%')) AND (deleted = 0 AND scholar = 0) ORDER BY `date_created` DESC LIMIT 25
$selectオブジェクトを使用してこれを実現するための正しい構文。