Laravel 5 Eloquent: что значит has, with, whereHas

Laravel 5

laravel

Eloquent: что значит has, with, whereHas

With

Применяется для жадной загрузки. То есть вместе с самой моделью Laravel загружает и связанные данные. Это полезно, если у вас есть коллекция моделей и для каждой вы хотите загрузить связанные данные. При жадной загрузке будет выполнен только один дополнительный запрос к базе данных.

Пример User > hasMany > Post:

Has

Применяется для фильтрации по связанным данным. Это очень похоже на обычно where-условие. Если вы используете has('relatiion'), то получите только те модели, у которых есть хотя бы одна связанная модель.

Пример User > hasMany > Post:

WhereHas

Работает как и has, но с возможностью указать дополнительные фильтры для связанной модели.

Пример User > hasMany > Post:

Важно, что with добавляет связанные данные в коллекцию, а has и whereHas  - нет. Иногда может понадобиться применить with и has одновременно (или with и whereHas).

И есть еще такой вариант:

все материалы по Laravel 5