考虑一下,我们有用户和用户拥有帐户(一对多)。现在我完全陷入了以下问题:我们提供$query
并希望返回所有用户:
fullname LIKE %$query%
或email LIKE %$query%
或organisation LIKE %$query%
我已经尝试过连接和可包含的行为,但没有成功。使用连接我们可以实现这一点,但问题是,数据不是以蛋糕方式构建的(即使同一用户多次出现,我们也只获得一行专业匹配)。使用数据不会很好,因为这个控制器必须非常快。
帮助!
答案 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.'%',
)
)
));