选择,加入和&在Laravel

时间:2014-08-28 18:39:18

标签: php sql laravel laravel-4

我正在尝试从两个表中选择特定列但是当我将 - > select()方法添加到我的查询中时,我收到错误。

如果我省略了 - > 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并解析查询时,就像这些时候一样! 有什么建议吗?

1 个答案:

答案 0 :(得分: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();