yii2:模型函数中的Yii \ db \ Query

时间:2014-12-18 15:40:37

标签: php mysql yii2

我正在尝试在我的一个model.php中创建一个查询

查询就像

public function getBedCategory(){
     $query = (new \yii\db\Query())
    ->select('room_category')
    ->from('room_charges') 
    ->innerJoin('patient_detail', 
   'patient_detail.bed_type = room_charges.room_name')
   ->where(['room_charges.room_name'=> 'patient_detail.bed_type',
   'patient_detail.id'=> $this->id]);
   $command = $query->createCommand();
   $rows = $command->queryOne();
   //var_dump($command);exit;
   return $rows;
   }

为$ command执行var_dump时,我得到的sql查询如下:

SELECT `room_category` FROM `room_charges` 
INNER JOIN `patient_detail` ON patient_detail.bed_type = room_charges.room_name 
WHERE (`room_charges`.`room_name`=:qp0) AND (`patient_detail`.`id`=:qp1)

在$ rows的var_dump上我得到boolean:false

我在这里做错了,为什么我得到这个:qp0和:qp1

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

正如Tahir所说,:qp0:qp1是参数的占位符。这些在执行查询时被静态值替换。您的问题是patient_detail.bed_type不应该被参数化。因此,您的代码应为:

...
->where(['room_charges.room_name = patient_detail.bed_type',
'patient_detail.id'=> $this->id]);

有关where()的详细信息,您可以查看the API page