Ответы пользователя по тегу Laravel
  • Laravel. Что такое "eager loading" в двух словах на пальцах?

    @Inclusive
    В документации все просто расписано.
    Есть модель:
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class User extends Model
    {
        /**
         * Get the phone record associated with the user.
         */
        public function phone()
        {
            return $this->hasOne('App\Phone');
        }
    }


    Выбрали вы пользователей:
    $users = (new User())->newQuery()->get();

    Если вы сделаете так:
    foreach($users as $user){
       $phone = $user->phone;
    }

    То при каждом запросе к отношению - будет отдельный запрос.
    Вместо этого можно сделать либо:
    $users = (new User())->newQuery()->with('phone')->get();

    либо уже после получения:
    $users->load('phone');
    В первом случае при наличии 10 записей с пользователями произойдет 11 запросов, во втором и третьем всего 2 запроса.
    Ответ написан
    7 комментариев