如何在cakephp中编写引用不同表的mysql查询

如何在cakephp中编写引用不同表的mysql查询,cakephp,Cakephp,我有表用户(id,电子邮件),邮件(id,消息,接收者,用户id),服务(id,服务,用户id) 一个用户发布一项服务,另一个用户通过邮件回复该服务。我想编写一个查询,从用户那里检索发布特定服务的用户的电子邮件,并在有人回复该服务时在邮件的接收方字段中捕获它 我对蛋糕还不太熟悉,不知道该去哪里 $receiver = $this->User->find('first',array( 'conditions' => array(

我有表用户(id,电子邮件),邮件(id,消息,接收者,用户id),服务(id,服务,用户id)

一个用户发布一项服务,另一个用户通过邮件回复该服务。我想编写一个查询,从用户那里检索发布特定服务的用户的电子邮件,并在有人回复该服务时在邮件的接收方字段中捕获它

我对蛋糕还不太熟悉,不知道该去哪里

$receiver = $this->User->find('first',array(
             'conditions' => array(
                     'Users.user_id' => 'Services.user_id', 
              )
));

SQL Query

SELECT u.email FROM users AS u, services AS s WHERE s.user_id = u.id LIMIT 0 , 30

假设您有User.php模型,创建一个操作,如下所示

function getData(){
$options = array(
        //'conditions' => array(‘User.user_id’=>9),
        'joins' => array(
            array(
                'alias' => 'Service',  
                'table' => ‘services’,
                'type' => 'LEFT',
                'conditions' => array(
                    'Service.user_id = User.id',
                ),
            ),
            array(
                'alias' => 'Mail',  
                'table' => ‘mail',
                'type' => 'LEFT',
                'conditions' => array(
                    'Mail.user_id = User.id',
                ),
            )
        ),
        'fields' => array('User.email'),
        'limit'=>10

    );

 $returnData = $this->find('all',$options);
 return $returnData;
}
从控制器将此方法调用为

$data = $this->User->getData();
print_r($data);

希望它能解决你的问题

首先在模型上建立关系,然后您将检索关于您用户的所有信息。请提及您在sqlRelationships中的愿望查询。关系已完成,我只需要查询电子邮件模型与服务模型的关系如何?接收者是用户的id?我想您需要服务表中的
service\u id
字段。否则,您如何将电子邮件与服务关联?