Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 28.08.2013 13:34:47

[L4] STI или polymorphic relations, нужен совет

У меня есть модель Beneficiary. В начале подразумевалось, что Beneficiary будет одним человеком, но потом выяснилось, что он может быть и сообществом.

Т.е. надо наследоваться от Beneficiary на 2 модели:

Beneficiary
— id
— name

Person
— gender

Group
— amount_female
— amount_male

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

Не в сети

#2 28.08.2013 13:42:47

Re: [L4] STI или polymorphic relations, нужен совет

  1. Нативно ларавел 4 поддерживает полиморфные связи, но так и не понял как его юзать и стоит ли его юзать вообще.

С этим помочь не могу, но есть несколько вариантов, как это сделать самому:

  1. Использовать два поля тип объекта и id; подход «в лоб», но не очень хорош из-за того, что на id нельзя повесить внешний ключ и вообще связи
  2. Использовать одно поле id и две разных таблицы; для себя установить правило, что объекты в определённом диапазоне ID принадлежат к одной таблице, а прочие — к другой (например, ID до 5000000 — Person, выше — Group)
  3. Использовать одно поле id и одну таблицу; на две модели разделять данные на серверной стороне после чтения их из БД; можно добавить поле-флаг тип объекта в эту таблицу, можно просто эмперически ( sqlgender IS NULL — Group)

Какой подход использовать зависит от ситуации — если в обоих моделей много общих полей можно пойти по третьему пути, если много моделей (больше 2-3) — по первому; второй — компромиссный и тоже довольно интересный; нужно только соблюдать диапазон ID при создании новых моделей.

Не в сети

#3 28.08.2013 16:53:20

Re: [L4] STI или polymorphic relations, нужен совет

3 вариант насколько я понял смахивает на STI, сейчас читаю вот эту статью:
snooptank()com/single-table-inheritance-with-eloquent-laravel-4/

оттуда нашёл решение
https://gist.github.com/asakurayoh/4100877

сейчас пробую

Не в сети

#4 29.08.2013 10:50:37

Re: [L4] STI или polymorphic relations, нужен совет

Решаю схожую задачу. В разнообразии возможных вариантов здорово помогает разобраться презентация Билла Карвина. Полиморфные связи на 32 слайде.


Taylor Otwell @taylorotwell
In other news, features debuting at @laraconeu are going to rock your world. Can’t wait to show you!
http://live.laracon.eu/

Не в сети

Подвал раздела