蛋糕php自定义查询

时间:2014-11-11 11:18:56

标签: 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
                uap.animal_type_id='.$this->request->data['User']['animal'].' ');

Userht_users的模型,UserAnimalPriceht_user_animal_prices的模型。如何组合查询?

请帮忙。

3 个答案:

答案 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');

这表示您要访问该控制器中的用户模型。那么你将被允许这样做。