Условия в связи один ко многим в Laravel
Можно добавлять дополнительные условия при получении связанных данных. Давайте посмотрим, как это делается. Пусть у нашей таблицы с постами будет также и поле likes, содержащее количество лайков:
posts
id
title
likes
Давайте для начала получим категорию вместе с коллекцией ее постов:
<?php
class CategoryController extends Controller
{
public function show()
{
$posts = Category::find(1)->posts;
dump($posts);
}
}
?>
Теперь заменим свойство posts на метод posts(). В этом случае метод своим результатом вернет построитель запросов:
<?php
class CategoryController extends Controller
{
public function show()
{
$qb = Category::find(1)->posts();
dump($qb);
}
}
?>
Так как возвращается построитель запросов, то мы можем дальше продолжить цепочку, к примеру, наложив некоторое условие на получаемые посты:
<?php
class CategoryController extends Controller
{
public function show()
{
$posts = Category::find(1)
->posts()
->where('likes', '>', 10)
->get();
dump($posts);
}
}
?>