我在cakephp中使用自定义查询,但我不明白如何运行自定义连接查询。 我正在使用此代码
$arrayTemp1 = $this->User->query('SELECT DISTINCT
u.id,u.hunting_association FROM ht_users as u LEFT JOIN
`ht_user_animal_prices` as uap ON uap.user_id=u.id WHERE
uap.animal_type_id='.$this->request->data['User']['animal'].' ');
User
是ht_users
的模型,UserAnimalPrice
是ht_user_animal_prices
的模型。如何组合查询?
请帮忙。
答案 0 :(得分:1)
如果要使用自定义查询并且需要UserAnimalPrice模型的数据,则只需将字段放在查询中即可。类似的东西:
$arrayTemp1 = $this->User->query('SELECT DISTINCT u.id,u.hunting_association, uap.* FROM ht_users as u LEFT JOIN ht_user_animal_prices as uap ON uap.user_id=u.id WHERE uap.animal_type_id='.$this->request->data['User']['animal'].' ');
如果您不想使用自定义查询:
$fields = array('User.id','User.hunting_association','UserAnimalPrice.*');
$join = array(
array(
'table' => 'ht_user_animal_prices',
'alias' => 'UserAnimalPrice',
'type' => 'LEFT',
'conditions' => array('UserAnimalPrice.user_id = User.id')
)
);
$conditions = array('UserAnimalPrice.animal_type_id' => $this->request->data['User']['animal']);
$group = array('User.id');
arrayTemp1=arrayTemp1->find('all',array('fields'=>$fields,'joins'=>$join,'conditions'=>$conditions,'group'=>$group));
答案 1 :(得分:0)
这是您使用的正确查询。您也可以在用户模型中使用它,如
public function getCustomUsersQuery()
{
$arrayTemp1 = $this->query("
SELECT
DISTINCT u.id,u.hunting_association FROM ht_users as u
LEFT JOIN
ht_user_animal_prices as uap ON uap.user_id=u.id
WHERE
uap.animal_type_id='".$this->request->data['User']['animal']."'");
return $arrayTemp1;
}
并在用户控制器内部调用
$result = $this->getCustomUsersQuery();
答案 2 :(得分:0)
对不起,我无法评论Rizwan的回答。如果您收到"致电会员功能......"问题,请确保您有以下代码
public $uses = array('User');
这表示您要访问该控制器中的用户模型。那么你将被允许这样做。