2014-12-18 3 views
2

Я пытаюсь создать запрос в одном из моих model.phpyii2: Yii дб Query в функции модели

Запрос похож

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; 
    } 

При выполнении 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) 

и var_dump в $ строк Я получаю булево: ложные

То, что я делать неверно здесь и почему я получаю это: qp0 и: qp1

Спасибо за любое предложение.

+1

Что такое '' 'patient_detail.bed_type''' в вашем состоянии' '' where'''? '' ': qp0''' и' '': qp1''' разместить держателей для ваших параметров запроса, которые будут заменены значениями, указанными в вашем '' '' ''''condition. – Tahir

+0

'patient_detail.bed_type' имеет тип integer – Pawan

ответ

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.

Смежные вопросы