2014-08-28 64 views
0

我試圖從兩個表中選擇特定的列,但是當我在查詢中添加 - > select()方法時,出現錯誤。Laravel中的選擇,連接和輪詢

如果省略 - > select()方法,我會得到一個有效的結果集並且一切正常,但添加select會將其分解。可悲的是,報告的錯誤與查詢無關,對我無用。

這裏是工作的代碼:

$notifications = DB::table('notifications') 
      ->join('notifications_pivot', function($join) 
     { 
       $join->on('notifications.id', '=', 'notifications_pivot.notification_id') 
        ->where('notifications_pivot.user_id', '=', Session::get('id')) 
        ->where('notifications_pivot.is_read', '=', 'N'); 
     }) 
     ->get(); 

現在,這裏是壓垮代碼:

$notifications = DB::table('notifications') 
     ->join('notifications_pivot', function($join) 
     { 
       $join->on('notifications.id', '=', 'notifications_pivot.notification_id') 
        ->where('notifications_pivot.user_id', '=', Session::get('id')) 
        ->where('notifications_pivot.is_read', '=', 'N'); 
     }) 
        ->select(DB::raw('notifications.id, notifications.subject, notifications.message, notifications.url, 
           notifications.start_date, notifications.end_date, notifications.access_role_id, notifications_pivot.id, 
           notifcations_pivot.notification_id, notifications_pivot.user_id, notifications_pivot.is_read')) 
     ->get(); 

它的時候像這樣的時候我希望我可以只寫直SQL和解析查詢! 有什麼建議嗎?

回答

0

取出DB::raw()並只傳遞所需的字段作爲參數。

如果這樣不起作用,Laravel日誌app/storage/logs/laravel.log可能會提供更多的信息。

$notifications = DB::table('notifications') 
     ->join('notifications_pivot', function($join) 
     { 
       $join->on('notifications.id', '=', 'notifications_pivot.notification_id') 
        ->where('notifications_pivot.user_id', '=', Session::get('id')) 
        ->where('notifications_pivot.is_read', '=', 'N'); 
     }) 
     ->select('notifications.id', 'notifications.subject', 'notifications.message', 'notifications.url', 'notifications.start_date', 'notifications.end_date', 'notifications.access_role_id', 'notifications_pivot.id', 'notifcations_pivot.notification_id', 'notifications_pivot.user_id', 'notifications_pivot.is_read') 
     ->get(); 
+0

是的,我第一次嘗試,但Laravel拋出相同的無用的錯誤,所以這就是爲什麼我嘗試原始選擇。 – Malchesador 2014-08-28 19:21:06

+0

BTW,錯誤的是 的Symfony \分量\調試\異常\ FatalErrorException(E_ERROR) 方法照亮\查看\查看:: __的toString()不得拋出一個異常 告訴我任何關於質詢失敗的原因,錯誤,爲什麼Laravel未能正確構造查詢... – Malchesador 2014-08-28 19:29:52

+0

我認爲查詢可能運行正常,但是在將數據傳遞到視圖時引發異常。在整個查詢周圍包裝一個'dd()',看看它是否會將它轉儲到你的控制器中。如果是這樣,那麼問題不在於你的查詢,我們應該看看你將它傳遞給你的視圖的方式。 – 2014-08-28 19:53:35