2016-09-25 2 views
1

я создать команду, и она работает нормально, но когда я добавляю IFNULL исключения его добавить запятую и я искал много нет ответа моего кода:yii2: добавить IFNULL исключения Command

public function actionTotal($id) 
{ 
    $query1 = new Query; 
    $query1 ->select(' sum(patient_services.price) price , 
       sum(IFNULL(receipts.price,0)) receipts') 
       ->from('patient_services') 
       ->leftJoin('receipts', 'patient_services.patient_id = receipts.patient_id') 
       ->where('patient_services.patient_id=:id', array(':id'=>$id));  
    $command1 = $query1->createCommand(); 
    $price = $command1->queryAll(); 
    echo Json::encode($price); 
} 

, когда я попробовать ... Выбрать код есть запятая и Яна знает, как удалить его

SELECT sum(patient_services.price) price, sum(IFNULL(receipts.price, `0))` AS `receipts` FROM `patient_services` LEFT JOIN `receipts` ON patient_services.patient_id = receipts.patient_id WHERE patient_services.patient_id=2 

enter image description here

ответ

1

Добавьте 0 как второй параметр для функции IFNULL, так что, если значение равно null, оно будет печатать 0, вот пример.

$query1->select(['sum(patient_services.price) price, 
       sum(IFNULL(receipts.price,0)) receipts']) 
+0

Я обновил свой вопрос :( –

+0

Я только что отредактировал мои анны, вам нужно положить скобки [] в ваш оператор выбора. Пожалуйста, см. Ans, Thanks –

3

в вас коде

$query1 ->select('sum(patient_services.price) price 
       ,sum(IFNULL(receipts.price,)) receipts') 
              ^^ here is missing the value for ifnull 
               eg: ifnull(your_column, 0); 
    ->from('patient_services') 
    ->leftJoin('receipts', 'patient_services.patient_id = receipts.patient_id') 
    ->where('patient_services.patient_id=:id', array(':id'=>$id));   

попробуйте

$query1 ->select(' sum(patient_services.price) price , 
        sum(IFNULL(receipts.price,0)) receipts') 
    ->from('patient_services') 
    ->leftJoin('receipts', 'patient_services.patient_id = receipts.patient_id') 
    ->where('patient_services.patient_id=:id', array(':id'=>$id)); 

глядя на странный результат в вашем IMG

попробуйте использовать эту эту нотацию и (удаление также два пространства между Query1 и ->

$query1->select(["sum(patient_services.price) AS price", 
    "sum(IFNULL(receipts.price,0)) AS receipts"] ) 

И в конечном итоге попытаться очистить каталог времени выполнения .. и сбросить кеш db

+0

жаль, что я не понимаю :( –

+0

меня обновить ответ надежды теперь ясно .. – scaisEdge

+0

когда я пытаюсь это показывает, как это инспектировать .. сумма (IFNULL (receipts.price, '0)) ' –