CakePHP / MySQL:查找模型本身的条件和分配的模型


CakePHP / MySQL: find with a condition for model itself and an assigned model

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

  • fullname LIKE %$query%
  • email LIKE %$query%
  • 谁有帐户,其中organisation LIKE %$query%

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

帮助!

尝试使用 -

$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);