@PHPjedi

Как грамотно написать Relationships?

У меня три таблицы, мне нужно их связать между собой, но не знаю как это сделать правильно.

Таблицы

Users

  • id
  • name


Purchases

  • id
  • car_id
  • subscription_id

  • type (String - subscription | car )

  • (Foreign)
  • user_id


Cars

  • id
  • name


Subscription

  • id
  • name


Как написать Relationships , чтобы я получил купленные пользователем машины?

Можно ли так? $user->purchases->cars? В модели пользователя (hasMany) получаем все покупки по user_id, а потом отделить, где type = subscription, а где type = car.

Я написал (помогли доки) следующим образом, но один момент, мы не подбираем по type.

return $this->hasManyThrough(
            'App\Car',
            'App\Purchase',
            'id',
            'id',
            'id', 
            'id'
        );


Дайте совет, пожалуйста.
  • Вопрос задан
  • 115 просмотров
Решения вопроса 2
@vism
конечно можно.
делаете релейшн carsPurchase()
hasMany(...)->where('type', Purchase::TYPE__CAR)
и всё. все по докам дальше.
Ответ написан
Комментировать
@maksim_fix
Junior PHP developer
Лучше сделайте две таблицы, отдельно users_cars и users_subscriptions, далее простя связь многие ко многим из документации. Зачем так усложнять с типами и тд. Либо же делайте 2 метода: getCars & getSubscriptions в модели User, далее работайте с Eloquent
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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