DJZT
@DJZT
Laravel - code for you

Как правильно построить структуру БД, где id зависимости может не быть?

Существует 3 таблицы.
Transactions(id, transactionable_id, transactionable_type, amount, ...)
Subscriptions(id, ....)
Orders(id, ...)
Если среди этих таблиц создать связь понятно как. Через morphTo.

Как мне зарегистрировать транзакцию, у которой нет "инициатора(transactionable)"?
Оставить пустые поля? Тогда будут проблемы с выводом списка да и нарушение зависимостей. Например мне надо создать Пожертвование(Donate). Отдельно создавать модель доната не имеет смысла. Ибо там я опять сталкиваюсь с той же проблемой. Если делать модель Donate, то необходимо делать поле user_id. А пожертвовать могут и гости сайта.
Видимо я упускаю какой-то паттерн проектирования БД. Подскажите как с этой проблемой бороться
  • Вопрос задан
  • 292 просмотра
Пригласить эксперта
Ответы на вопрос 1
AmdY
@AmdY
PHP и прочие вебштучки
Делай опциональные поля по дефолту null
При выводе простая проверка
@foreach(Transactions::all() as $transaction)
    @if (!empty($transaction->transactionable)) 
        {{ $transactions->transactionable->name }}
    @endif 
@endforeach


При желании можешь воспользоваться наследование, создать модель Donate, а от неё UserDonate и GouestDonate. У первого будет метод user у второго его не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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