Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pplrPmMRELM 189 of 252 menu
◀ ▶

Жадная загрузка множественных отношений в Laravel

Пусть у нас есть таблица с комментами, в которой каждый коммент связан со своим постом и со своим юзером:

comments

  • id
  • text
  • post_id
  • user_id

Пропишем эту связь:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Comment extends Model { public function post() { return $this->belongsTo(Post::class); } public function user() { return $this->belongsTo(User::class); } } ?>

Давайте получим все комменты:

<?php class CommentController extends Controller { public function show() { $comments = Comment::all(); dump($comments); } } ?>

Переберем комменты циклом и в цикле для каждого коммента будем получать его пост и его юзера:

<?php class CommentController extends Controller { public function show() { $comments = Comment::all(); foreach ($comments as $comment) { dump($comment); dump($comment->post); dump($comment->user); } } } ?>

В этом случае в каждой итерации цикла будут выполняться лишние SQL запросы. Давайте исправим проблему, заранее загрузив данные двух связанных моделей:

<?php class CommentController extends Controller { public function show() { $comments = Comment::with(['post', 'user'])->get(); foreach ($comments as $comment) { dump($comment); dump($comment->post); dump($comment->user); } } } ?>

Придумайте аналогичную задачу со своими таблицами и реализуйте ее.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить