Вывод массива laravel
Мне нужно выводить массив категорий. Вот что у меня в IndexController
public function __invoke()
{
$servers = Server::take(3)->get();
$categories = Category::all();
return view('main.index', compact('servers','categories'));
}
Вот что у моей модели
public function categories()
{
return $this->belongsToMany(Category::class,'server_categories', 'server_id', 'category_id');
}
У меня в БД таблицаserverстрокаcategory_id подкреплена к другой таблице server_categories
Вот что у меня в migrate server
$table->unsignedBigInteger('category_id')->nullable();
$table->index('category_id','server_category_idx');
$table->foreign('category_id','server_category_fk')->on('categories')->references('id');
Вот что у меня в migrate server_categories
$table->unsignedBigInteger('server_id');
$table->unsignedBigInteger('category_id');
$table->index('server_id','server_category_server_idx');
$table->index('category_id','server_category_category_idx');
$table->foreign('server_id','server_category_server_fk')->on('servers')->references('id');
$table->foreign('category_id','server_category_category_fk')->on('categories')->references('id');
Вот что у меня в index.blade.php
@foreach($servers as $server)
@dd($server->categories['title'])
@endforeach
И выводится следующая ошибка Undefined index: title
Я не понимаю в чем проблема, ведь раньше другие массивы я выводил именно так
Вот что у меня выводится когда я пишу
@dd($server->categories)
Если я что-то забыл вам показать, напиши. Спасибо за помощь
Ответы (1 шт):
Автор решения: Anton Mironov
→ Ссылка
У вас отношение многие-ко-многим, поэтому каждому серверу принадлежит несколько категорий. Для их вывода создайте вложенный цикл:
@foreach($servers as $server)
@foreach($server->categories as $category)
{{$category->title}}
@endforeach
@endforeach
