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