CakePHP / MySQL:查找模型本身和指定模型的条件

时间:2014-11-20 12:35:24

标签: php mysql cakephp

考虑一下,我们有用户和用户拥有帐户(一对多)。现在我完全陷入了以下问题:我们提供$query并希望返回所有用户:

  • fullname LIKE %$query%
  • email LIKE %$query%
  • 拥有帐户的人,organisation LIKE %$query%

我已经尝试过连接和可包含的行为,但没有成功。使用连接我们可以实现这一点,但问题是,数据不是以蛋糕方式构建的(即使同一用户多次出现,我们也只获得一行专业匹配)。使用数据不会很好,因为这个控制器必须非常快。

帮助!

2 个答案:

答案 0 :(得分:1)

尝试 -

$this->User->find(
    'all',
    array(
     'conditions' => array(
                      'OR' => array(
                               'User.fullname LIKE' => '%'.$query.'%',
                               'User.email LIKE' => '%'.$query.'%',
                               'Account.organisation LIKE' => '%'.$query.'%',
                              ),
                     ),
     'contain'    => 'Account',
    )
);

使用别名 -

$qry = "select * from users as u, accounts as a where u.fullname like %$query% or u.emaillike %$query% or a.organisation like %$query%";
$results = $this->query($qry);

答案 1 :(得分:0)

如果您正在寻找在查询中添加OR的方法,那么您可以试试这个:

$this->User->find('all', array(
    'conditions' => array(
        'OR' => array(
             'User.firstname LIKE' => '%'.$query.'%',
             'User.lastname LIKE' => '%'.$query.'%',
        )
    )
));