2016-12-01 2 views
0

Я пытаюсь получить этот запрос работать:Laravel 5,2 запроса не работает

DB::select(
    DB::raw('select 
     sum(case when outreach_links.status="Pending" and outreach_links.created_at >= :from and outreach_links.created_at <=:to then 1 else 0 end) as pp, 
     sum(case when outreach_links.status="Approved" and outreach_links.start_date >= :from and outreach_links.start_date <=:to then 1 else 0 end) as aa, 
     sum(case when outreach_links.status="Approved" then outreach_links.cost else 0 end) as cc, 
     MONTH(outreach_links.created_at) month, 
     MONTHNAME(outreach_links.created_at) month_name, 
     YEAR(outreach_links.created_at) year from outreach 
     inner join outreach_links on outreach.id = outreach_links.outreach_id 
     where outreach.profile_id=:proid 
     group by month, year', 
    ["from" => $from, "to" => $to, "proid" => $pro_id]) 
)->get(); 

Но я получаю сообщение об ошибке:

Call to a member function get() on a non-object 

Я изменил к этому и он работал :

DB::select(
    DB::raw('select 
     sum(case when outreach_links.status="Pending" and outreach_links.created_at >= ? and outreach_links.created_at <=? then 1 else 0 end) as pp, 
     sum(case when outreach_links.status="Approved" and outreach_links.start_date >= ? and outreach_links.start_date <=? then 1 else 0 end) as aa, 
     sum(case when outreach_links.status="Approved" then outreach_links.cost else 0 end) as cc, 
     MONTH(outreach_links.created_at) month, 
     MONTHNAME(outreach_links.created_at) month_name, 
     YEAR(outreach_links.created_at) year from outreach 
     inner join outreach_links on outreach.id = outreach_links.outreach_id 
     where outreach.profile_id=? 
     group by month, year'), 
    [$from, $to, $from, $to, $pro_id] 
); 
+0

'Я изменил это на это, и это сработало ', в чем проблема? –

+0

Вторая часть должна быть ответом, а не вставкой в ​​вопрос. – peterh

ответ

0

DB::raw() doesn't parse the query. Попробуйте переместить условия за пределами raw звонок:

DB::select(
    DB::raw('select 
     sum(case when outreach_links.status="Pending" and outreach_links.created_at >= :from and outreach_links.created_at <=:to then 1 else 0 end) as pp, 
     sum(case when outreach_links.status="Approved" and outreach_links.start_date >= :from and outreach_links.start_date <=:to then 1 else 0 end) as aa, 
     sum(case when outreach_links.status="Approved" then outreach_links.cost else 0 end) as cc, 
     MONTH(outreach_links.created_at) month, 
     MONTHNAME(outreach_links.created_at) month_name, 
     YEAR(outreach_links.created_at) year from outreach 
     inner join outreach_links on outreach.id = outreach_links.outreach_id 
     where outreach.profile_id=:proid 
     group by month, year'), 
    ["from" => $from, "to" => $to, "proid" => $pro_id] 
)->get(); 
+0

Я получаю сообщение об ошибке: Недопустимый номер параметра> SQLSTATE [HY093]: Неверный номер параметра (SQL: select sum (случай, когда outreach_links.status = "Ожидание" и outreach_links.created_at> =: from и outreach_links.created_at <=: до 1 else 0 end) как pp, sum (случай, когда outreach_links.status = "Approved" и outreach_links.start_date> =: from и outreach_links.start_date <=: to then 1 else 0 end) as aa, – user3150060

+0

Можете ли вы попробуйте удалить внутренний вызов raw и сохранить выделение? –

+0

Я удалил get и попробовал с помощью «?», и он сработал - проверьте мои вопросы, это лучший способ сделать это? – user3150060

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