1

簡単な検索機能を 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 回電話をかけずに、姓と名の検索とどのように組み合わせることができるでしょうか?ProfileUserUser$this->paginate

助けてくれてありがとう!

4

0 に答える 0