I am trying to do a where clause on withCount method of laravel's eloquent query builder using this piece of code.
$posts = Post::withCount('upvotes')->where('upvotes_count', '>', 5)->get(); and this code is giving me this error.
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'upvotes_count' in 'where clause' (SQL: select , (select count() from
upvoteswhereupvotes.upvoteable_id=posts.idandupvotes.upvoteable_type= App\Post) asupvotes_countfrompostswhereupvotes_count> 5)
So from what I can guess is that upvotes_count isn't selected and hence the column is not being found, BUT if I execute this piece of code.
$posts = Post::withCount('upvotes')->get(); Then I am getting this output.
{ "id": 1, "user_id": 15, "title": "Voluptatum voluptas sint delectus unde amet quis.", "created_at": "2016-10-07 13:47:48", "updated_at": "2016-10-07 13:47:48", "upvotes_count": 7 }, { "id": 2, "user_id": 2, "title": "Molestiae in labore qui atque.", "created_at": "2016-10-07 13:47:48", "updated_at": "2016-10-07 13:47:48", "upvotes_count": 2 }, Which basically means that upvotes_count is being selected, hence i am really confused about how to solve this problem.
(More options that I tried so far are given below with the respective error associated to it.)
$posts = Post::where('id', $id)->withCount(['upvotes' => function($query) { $query->where('upvotes_count', '>', 5); }])->get(); error.
SQLSTATE[42S22]: Column not found: 1247 Reference 'upvotes_count' not supported (forward reference in item list) (SQL: select , (select count() from
upvoteswhereupvotes.upvoteable_id=posts.idandupvotes.upvoteable_type= App\Post andupvotes_count> 5) asupvotes_countfrompostswhereid= 1)
code.
$posts = Post::where('id', $id)->with(['upvotes' => function($query) { $query->select('upvoteable_id AS upvotes_count'); }])->where('upvotes_count', '>', 5)->get(); AND
$posts = \App\Post::where('id', $id)->with(['upvotes' => function($query) { $query->selectRaw('upvoteable_id AS upvotes_count'); }])->where('upvotes_count', '>', 5)->get(); error.
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'upvotes_count' in 'where clause' (SQL: select * from
postswhereid= 1 andupvotes_count> 5)
I just want to use where clause on a count() method which is in a relationship with a parent model.