Php 自定义查询

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

我在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\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注入的信息|