簡単な検索機能を CakePHP アプリケーションに実装しようとしています。ユーザーがメンバーの名、姓、およびメンバーのスキルに基づいて検索できるようにしたいと考えています。
私のモデルは次のように関連付けられています。
User ---hasOne---> Profile ---HABTM---> Skill
したがって、ユーザーは 1 つのプロファイルを持ち、プロファイルは多くのスキルを持つことができ、スキルは多くのプロファイルに属することができます。これらの関係は正しく設定されています。
これを行うことで、基本的な名の検索を機能させることができました。
public function memberList() {
if(isset($this->request->data['User']['query'])) {
// The user is searching, change the conditions of the retrieval
$q = $this->request->data['User']['query'];
$this->paginate = array(
'conditions' => array('Profile.firstname LIKE' => "%$q%")
);
}
// Retrieve member list
$this->set('users', $this->paginate('User'));
}
ただし、助けが必要なことが 2 つあります。1 つはOR
、クエリで を実行する方法です。名と姓を検索したいので、する必要がありますProfile.firstname LIKE %$q% OR Profile.lastname LIKE %$q%
。conditions
ページネーション呼び出しのパラメーターを使用してそれを達成するにはどうすればよいですか?
2 つ目の問題は、ユーザーのスキルによる検索です。はではなく とSkill
関係があるため、モデルへの検索呼び出しによってスキルが返されません。ユーザーのプロファイルのスキルが返されるようにこれを変更する方法はありますか? そして、そこまで行った場合、 2 回電話をかけずに、姓と名の検索とどのように組み合わせることができるでしょうか?Profile
User
User
$this->paginate
助けてくれてありがとう!