Самоссылающиеся сущности в Laravel Красноречивый обходной путь для однонаправленных связей сущностей - PullRequest
0 голосов
/ 28 января 2020

У меня есть вариант использования примерно такой:

Account -> Relation -> Account

В таблице Relation записываются все взаимодействия между двумя учетными записями. В данный момент это представлено как Pivot. Проблема, с которой я сталкиваюсь - это однонаправленное отношение «многие ко многим». Я не могу ссылаться на «родительскую» учетную запись и их отношение из «дочерней» учетной записи, используя тот же вызов отношения из-за ограничения Laravel Eloquent, не поддерживающего двусторонние отношения со многими ссылками «многие ко многим» ( который Doctrine поддерживает , но не документирован четко и не соответствует скорости Laravel). Предполагая, что account01 и account02 являются единственными в отношении, результаты:

$account02 = Account::first()->assocations->first();
$account02->associations; //null or []

У меня уже есть успех с этим решением , остается только ошибка загрузка с «детского» аккаунта. Я не думаю, что использование графической базы данных подойдет именно этому варианту использования, потому что данные сильно структурированы.

3 вопроса:

  1. Помогите ли вам сделать загрузку с помощью обходного пути? Я беру систему в производство с этой структурой и хочу, чтобы она была готова, если Eloquent подлежит замене.
  2. Если наш сценарий использования перерос Eloquent, я должен рассмотреть вопрос о принятии время научиться Doctrine (шаблон сопоставления данных или активная запись) для реализации самоссылочных таблиц с отношениями "многие ко многим"?
  3. Я ошибаюсь из-за сохранения отношений базы данных структурированных и графовых данных? Если да, какую базу данных мне следует использовать для этого?

Приложение:

Я думал сделать Relation полноценной моделью / Сущность, поэтому я тоже могу связать с ней отношения. Сейчас я обошел ограничение Pivot, но чтобы преобразовать Relation в полноценную модель / сущность, мне все равно нужно решить проблему однонаправленных отношений с самообращением.


Current Схема дизайна

+------------+
|  accounts  |
+------------+
| id         |
| ...        |
| created_at |
| updated_at |
+------------+

+----------------------+
| account_associations |
+----------------------+
| account_0            |
| account_1            |
| message_id           |
| post_id              |
| other_id             |
| ...                  |
| created_at           |
| updated_at           |
+----------------------+
...