Я использую отношение «многие ко многим».
Необходимо перечислить статьи, к каким категориям относится пост, я сделал это с помощью компоновщика, так как не знаю, как это сделать, через ORM.
У меня есть три таблицы:
категории
-Я бы
-name
изображения
-Я бы
-образ
-description
category_image (сводная таблица)
-Я бы
-image_id
-category_id
public function getCategoryTitle($id)
{
$post = DB::table('category_image')
->where('image_id', '=', $id)
->get();
$categoryImage = $post->toArray()[0]->category_id;
$showCategory = DB::table('categories')
->where('id', '=', $categoryImage)
->get();
return $showCategory->toArray()[0]->name;
}
Теперь получается, что для каждой статьи будет еще 2 запроса к базе данных, что очень плохо.
вывод так
public function index()
{
$posts = Image::all();
return view('admin.posts.index', ['posts'=>$posts]);
}
Я пытался получить название категории с помощью ->
@foreach($posts as $post)
<tr>
<td>{{$post->id}}</td>
<td>{{$post->description}}</td>
<td>{{$post->getCategoryTitle($post->id)}}</td>
<tr>
@endforeach
Изображение модели
dd( $this->belongsToMany(
Category::class,
'category_image',
'image_id',
'category_id',
1
));
Есть ли простой способ получить название категории для каждого изображения, используя отношение.