我正在尝试在我的一个模型中创建一个查询.php
查询类似于
public function getBedCategory(){
$query = (new yiidbQuery())
->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我得到布尔值:假
我在这里做错了什么以及为什么我得到这个:qp0和:qp1
感谢您的任何建议。
正如 Tahir 正确指出的那样:qp0
和:qp1
是参数的占位符。这些值在执行查询时替换为静态值。你的问题是patient_detail.bed_type
不应该被参数化。因此,您的代码应为:
...
->where(['room_charges.room_name = patient_detail.bed_type',
'patient_detail.id'=> $this->id]);
有关where()
的更多信息,您可以查看 API 页面。