【发布时间】:2014-03-29 11:13:28
【问题描述】:
我有一个包含姓名、姓氏、电子邮件、前姓氏的用户模型。还有 AdditionalEmail 模型,我在其中为用户存储额外的电子邮件。每个用户可以有多个额外的电子邮件。每个模型中分别设置了关系hasMany和belongsToMany。 我必须搜索姓氏、前姓氏、电子邮件和其他电子邮件。我尝试使用可包含的行为并创建了下表进行查询:
$options['joins'] = array(
array(
'table' => 'users',
'alias' => 'User',
'type' => 'LEFT',
'conditions' => array('User.id = AdditionalEmail.user_id')
));
$options['conditions'] = array('OR' => array(
'User.surname LIKE' => $search,
'User.former_surnames LIKE' => $search,
'User.email LIKE' => $search,
'AdditionalEmail.email LIKE' => $search));
$options['recursive'] = -1;
$options['fields'] = 'DISTINCT User.username, User.name, User.surname, User.former_surnames';
$options['order'] = array('User.surname' => 'asc');
以上内容对我不起作用。我终于得到了查询:
SELECT DISTINCT users.* FROM users LEFT JOIN additional_emails ON ( users.id = additional_emails.user_id ) WHERE ((additional_emails.email LIKE \''. $search .'\') OR (users.email LIKE \''. $search .'\') OR (users.surname LIKE \''. $search .'\') OR (users.former_surnames LIKE \''. $search .'\')) ORDER BY users.surname
工作正常。如何使用用于查找(或分页)的 cakephp 选项构建此查询。 问候 彼得
【问题讨论】:
标签: mysql cakephp join distinct