1

我正在尝试为我的 CakePHP 应用程序实现简单的搜索功能。我希望用户能够根据成员的名字、姓氏和成员拥有的技能进行搜索。

我的模型是这样关联的:

User ---hasOne---> Profile ---HABTM---> Skill

所以一个用户有一个配置文件,一个配置文件可以有很多技能,一个技能可以属于多个配置文件。这些关系设置正确。

通过这样做,我设法使基本的名字搜索工作:

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'));
}

但是,有两件事我需要帮助。一个是如何OR在查询中做一个。因为我想搜索名字和姓氏,所以我需要做Profile.firstname LIKE %$q% OR Profile.lastname LIKE %$q%. 如何使用conditions分页调用的参数来实现这一点?

第二个问题是按用户技能搜索。因为与而不是Skill有关系,所以我没有得到任何由我的模型的 find 调用返回的技能。有没有办法可以改变这一点,以便返回用户的个人资料的技能?如果我走得那么远,我将如何将它与名字和姓氏搜索结合起来而不需要调用两次?ProfileUserUser$this->paginate

感谢您的任何帮助!

4

0 回答 0