2014-11-04 7 views
2

Предположим, у меня есть следующая настройка. A User имеет множество Coments. В моем REST API у меня есть действие /users, где я показываю всех пользователей и их комментарии.Laravel Eloquent «With» фильтр

Я хотел бы сделать, что, как это:

return Response::json(User::with('comments')->get(), 200); 

Но теперь я только хочу, чтобы отобразить User в этом списке, если он имеет по крайней мере один Comment. Что-то в строках:

return Response::json(User::with('comments')->whereCount('users.comments', '>', 0)->get(), 200); 

Но это, очевидно, не работает. Каков правильный способ сделать это в сочетании с методом with?

ответ

4

Вы можете использовать в этом случае has получить только пользователь, которые имеют по крайней мере один комментарий:

return Response::json(User::with('comments')->has('comments')->get(), 200); 

Reference

+2

заметить также whereHas() 'функцию' в этой ссылке, если вы хотите добавить более сложные условия, чем считать. – danhardman