Php 自定义查询
我在cakephp中使用过自定义查询,但我不知道如何运行自定义联接查询。 我正在使用这个代码Php 自定义查询,php,mysql,cakephp,Php,Mysql,Cakephp,我在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
$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\u用户的模型
,UserAnimalPrice
是ht\u用户动物价格的模型
。如何组合查询
请提供帮助。如果您想使用自定义查询,并且需要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));
这是您使用的正确查询。您也可以在用户模型中使用它,如
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();
很抱歉,我不能评论Rizwan的回答。如果您收到“调用成员函数…”问题,请确保您有以下代码
public $uses = array('User');
这表明您希望访问该控制器中的用户模型。然后您就可以这样做了。请大家告知自己有关SQL注入的信息|