Для этого вам нужно использовать Eloquent Relation .
В классе Category
вам необходимо определить отношение, как показано ниже:
public function posts()
{
return $this->hasMany(Post::class);
}
Тогда Вы можете получить все сообщения для данной категории, вызвав метод posts()
. Например, чтобы получить все сообщения для category Id = 1
, вы можете сделать это:
Category::find(1)->posts
Аналогично, в классе Post
вы можете создать categor()
метод
public function category()
{
return $this->belongsTo(Category::class);
}
Чтобы получить все категории из всех сообщений
(1) Затем вы можете использовать коллекцию Laravel, чтобы найти все названия категорий для всех сообщений. Например:
App\Post::all()->map->category->pluck('name')->unique()
Обратите внимание, что в приведенной выше строке я использую метод Collection map
, чтобы создать конструкцию более высокого порядка для l oop через все сообщения.
(2) Чтобы отобразить это в виде, из вашего контроллера сначала верните представление
public function index()
{
$categories = App\Post::all()->map->category->pluck('name')->unique();
return view('index', compact('categories');
}
(3) Отображение данных в Blade Внутри index.blade.php
отобразите значения как это:
@foreach($categories as $c)
{{ $c }}
@endforeach