【问题标题】:Select distinct query across multiple tables跨多个表选择不同的查询
【发布时间】: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


    【解决方案1】:
     $this->User->find('all', 
         array(
             'fields' => array('DISTINCT *'), 
             'joins' => array(
                   array(
                        'table' => 'additional_emails',
                        'alias' => 'Email',
                        'type' => 'left',
                        'conditions' => array('User.id = Email.user_id')
                   ),
              ),
              'conditions' => array(
                   'OR' => array(
                       'Email.email LIKE' => $search,
                       'User.email LIKE' => $search,
                       'User.surname LIKE' => $search,
                       'User.former_surnames LIKE' => $search,
                    )
              ),
              'order' => array('User.surname'),
         )
     );
    

    【讨论】:

      猜你喜欢
      • 2013-11-12
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多