Laravel одна таблица, соединяющая две другие отношения многих ко многим - PullRequest
1 голос
/ 13 апреля 2019

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

До To this

Это будет означать, что один ваучер может быть использован для нескольких услуг и / или для покупкипрочее.

Допустим, ваучер стоит 500 долларов на парикмахерскую.Он мог, например, подстричься (услуга) и купить средства по уходу за волосами (продажа) с помощью одного и того же ваучера.Будет ли мой образ "To" работать?Не обращайте внимания на названия таблиц и т. Д. Я только что создал их для своего примера.

Спасибо за чтение

1 Ответ

2 голосов
/ 13 апреля 2019

Ваш "to" стол будет работать. В этом случае клиент может использовать тот же ваучер на услугу И / ИЛИ Распродажа. Когда вы извлекаете ваучеры, использованные в продаже, вы получите отношения от linkingtable_salevoucher, а когда вы извлекаете отношения из сервисов, это будет использовать linkingtable_servicevoucher. При желании ваучер можно использовать только в сервисе ИЛИ продажа, а не в обоих. Прежде чем создавать новые отношения, вы можете проверить, есть ли другие отношения. Как это:

//Before create a Sale with voucher, check if voucher has be used
$voucher = App\Voucher::where('serialNumberOfProduct', $serialVoucher)
             ->has('services')->get();
if($voucher->count() == 0){
    //create the new relationship
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...