2016-03-19 2 views
0

Laravel Запрос:Моя работа запросов в MySQL, но не работает с Laravel красноречивым

$studentsFee = \FeeModal::query(); 
$studentsFee->groupBy('main_campus_id', 'session_id', 'class_info_id', 'section_id', 'stage_id') 
       ->selectRaw('count(student_id) as student_strength,SUM(IF(paid_amount>0,1,0)) as submit_students,SUM(IF(paid_amount=0,1,0)) as not_submit_students, sum(paid_amount) as submit_amount') 
       ->with('sessionMode', 'section', 'classInfo', 'stage')->get(); 

dd(count($studentsFee). ' Records'); 

Результат: 0 записей

Сформирован запрос по ->toSql();

string(281) "select count(student_id) as student_strength,SUM(IF(paid_amount>0,1,0)) as submit_students,SUM(IF(paid_amount=0,1,0)) as not_submit_students, sum(paid_amount) as submit_amount from `fee` group by `main_campus_id`, `session_id`, `class_info_id`, `section_id`, `stage_id`" 

и когда я выполнить этот запрос в mysql он возвращает 18 строк;

ответ

0

Я думаю, что вы забыли присвоить результат запроса в переменную:

$studentsQuery = \FeeModal::query(); 
$studentsFee = $studentsQuery->groupBy('main_campus_id', 'session_id', 'class_info_id', 'section_id', 'stage_id') 
       ->selectRaw('count(student_id) as student_strength,SUM(IF(paid_amount>0,1,0)) as submit_students,SUM(IF(paid_amount=0,1,0)) as not_submit_students, sum(paid_amount) as submit_amount') 
       ->with('sessionMode', 'section', 'classInfo', 'stage')->get(); 

dd(count($studentsFee). ' Records'); 
+0

Спасибо alexw за ответ: но я не понимаю вашу точку .. что вы хотите спросить, что ... где я забыл присвоить результат запроса переменной ... –

+0

Я говорю, что если это не какая-то особенность Eloquent, о которой я не знаю, вам нужно назначить результаты 'get' переменной (в моем примере я вызываю * result * '$ studentsFee'. В вашем примере' $ studentsFee' является вашим * запросом *. Когда вы вызываете 'count' на объект * query *, он не собирается возвращать подсчет * результата * запроса - он попытается «подсчитать» сам запрос. – alexw