erniesto77
@erniesto77
oop, rb, py, php, js

Laravel. Что такое «eager loading» в двух словах на пальцах?

Вот и весь вопрос. Привет всем!
  • Вопрос задан
  • 2092 просмотра
Пригласить эксперта
Ответы на вопрос 1
@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 запроса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы