考虑一下,我们有用户,用户有帐户(一对多)。现在我完全陷入了以下问题:我们提供了一个$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);