«One of Many» для Laravel | OTUS

«One of Many» для Laravel

Начиная с версии 8.42, Laravel стал поддерживать новые Eloquent-отношения «Один из многих» («One of Many»). Давайте посмотрим, как это реализовано.

В первую очередь стоит сказать, что новшество появилось благодаря вот этому пул-реквесту.

1-1801-6dd04a.png

Вообще, само по себе отношение Один-из-многих позволяет создавать связь Один-к-одному из отношений Один-ко-многим. К примеру:

• «первый вход в систему»; • «последний вход в систему»; • цена на продукт (получение актуальной цены товара).

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

2-1801-a006a2.png

В нашем примере модель User характеризуется множеством входов в систему. Ниже — код, задающий отношения Один-из-многих:

3-1801-c3910f.png

Еще ниже — интерфейс, который связан с ofMany:

4-1801-4a8585.png

При этом пул-реквест состоит из 2-х вспомогательных методов, что обеспечивает большую выразительность:

5-1801-79afb8.png

Получить дополнительную информацию можете по ссылке на сам пул-реквест. В частности, в описании вы найдете недостатки применения hasOne для данного типа отношений, то есть нужно понимать, когда стоит применять этот тип отношений, а когда нет. Есть и примеры с ofMany(): cbl/laravel-one-of-many, где особое внимание стоит уделить модели User.

Источник: https://laravel-news.com/one-of-many-eloquent-relationship.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто