2013-09-05 9 views
3

http://laravel.com/docs/eloquent#polymorphic-relationsОбъяснить Laravel Полиморфные отношения

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

Я действительно не понимаю этот прецедент. Означает ли это, что сотрудник может иметь фотографию, или фотография может быть размещена в заказе? Почему бы просто не положить photo_id в staff стол и photo_id в order стол?

Может ли кто-нибудь предложить альтернативный, простой для понимания пример использования полиморфных отношений?

ответ

2

Вы можете добавить photo_id в штат и заказ, но с типом отношения morphMany вам не нужно «загромождать» все модели, которые нуждаются в фото. При создании третьей модели, которая нуждается в Фото, просто добавьте методы, и вы закончили - нет необходимости создавать дополнительные столбцы, что когда-либо.

Также обратите внимание, что вы можете указать имя. В руководстве используется «образный», но вы можете использовать несколько имен для разных типов фотографий (или других моделей).

1

Из чего я понимаю, ваш взгляд на пример, представленный в Документах Laravel, является ошибочным.

Если бы вы были просто добавить photo_id в обеих таблицах staff и order, то каждый сотрудник может иметь только одну фотографию, в то время как заказ может иметь только одну фотографию. Одна фотография может принадлежать только персоналу или Ордену, но один сотрудник или один заказ могут иметь несколько фотографий.

Смежные вопросы