This query works in 5.2:
$galleries = Gallery::with(array( 'images' => function ($query) { $query->orderBy('order', 'asc'); } )) ->with('votes') ->leftJoin('votes', 'votes.votable_id', '=', 'gallery.id') ->selectRaw( 'gallery.*, count(case votes.status when "upvote" then 1 else null end) - count(case votes.status when "downvote" then 1 else null end) as points' ) ->where('votes.votable_type','App\Gallery') ->groupBy('gallery.id') ->orderBy('points', 'desc') ->published()->orderBy('gallery.created_at', 'desc')->paginate(30);
I try to select all the galleries that have voices when I launch it in 5.3. I get it
1/2 PDOException in Connection.php line 333: SQLSTATE[42000]: Syntax error or access violation: 1055 'images.gallery.title' isn't in GROUP BY SQLSTATE[42000]: Syntax error or access violation: 1055 'images.gallery.title' isn't in GROUP BY (SQL: select gallery.*, count(case votes.status when "upvote" then 1 else null end) - count(case votes.status when "downvote" then 1 else null end) as points from `gallery` left join `votes` on `votes`.`votable_id` = `gallery`.`id` where `votes`.`votable_type` = App\Gallery and `published` = 1 group by `gallery`.`id` order by `points` desc, `gallery`.`created_at` desc limit 30 offset 0)
source share