iamjack
@iamjack
PHP, JS developer

Как работать с отношениями в Laravel без второстепенных моделей?

Всем привет!

Доки по отношениям как-бы всё ясно раскрывают - есть у нас модель User, у $user может быть телефон, значит мы делаем отношение между моделью User и Phone. А что, если я не хочу создавать отдельную модель для Phone, но всё также хочу получать расширенные данные о телефоне из другой таблицы?

У меня ситуация такая, когда у меня есть некая таблица Metadata (на ней основывается модель Metadata). И есть таблица с переводами для каждого элемента из Metadata (MetadataTranslations). Отдельно логического основания для создания модели перевода для Metadata я не вижу - переводы существуют только в подчинении у Metadata (MetadataTranslation никогда не будет переназначен другой модели Metadata, как это могло бы быть с Phone и User или Comment и Post). Соответственно, я бы хотел чтобы все операции с Metadata и переводами осуществлялись в рамках модели Metadata.

Я не так давно разбираюсь с Laravel, но вот немного не могу вникнуть в то, как правильно бы подойти к архитектуре. По возможности, объясните, как бы сделали вы в моей ситуации, которую я описал выше. Спасибо
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
@Faim
Для реализации перевода есть отличный пакет dimsav/laravel-translatable.

А что, если я не хочу создавать отдельную модель для Phone, но всё также хочу получать расширенные данные о телефоне из другой таблицы?

В случае если это отношение один к одному, то можно обойтись обычным джойном. В остальных случаях удобней пользоваться Eloquent отношениями.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AmdY
@AmdY
PHP и прочие вебштучки
Вы хотите архитектуру или костыли? Есть MetadataTranslations, создавайте для неё модель. Экономя на спичках вы ничего не выиграете.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы