Мне, к сожалению, нужно импортировать данные от стороннего поставщика и использовать их нестандартную схему базы данных с моим проектом laravel. Кроме того, мне нужно хранить несколько «фирм», каждый из которых имеет свой собственный набор пользователей в моей базе данных.Laravel отношения с составными, нестандартными внешними ключами
Я пытаюсь найти лучший способ (если это можно сделать) использовать Eloquent для обработки отношений между этими таблицами. Так, например, с моей структурой таблицы, как это:
BmPerson
'id',
'firmId',
'personId'
BmCoverage
'id',
'firmId',
'personId',
'securityId'
BmSecurity
'id',
'firmId',
'securityId'
... к примеру, мне нужно, чтобы связать «BmPerson» со многими «BmSecurity» через стол «BmCoverage».
Но мне нужно как-то использовать составные клавиши, потому что я храню несколько «фирм» в каждой таблице (по схеме базы данных стороннего поставщика).
Один подход, который я использовал до сих пор является обзорного, например: для моей модели BmCoverage:
public function scopeFromFirm($query,$firmId){
return $query->where('firmId','=',$firmId);//->where('personId','=',$personId);}
public function scopeFromPerson($query,$personId){
return $query->where('personId','=',$personId);//->where('personId','=',$personId);}
Тогда я могу получить список покрытия для отдельного человека, но мне еще нужно каким-то образом быть в состоянии связать «BmCoverage» с «BmSecurities». Полагаю, я мог бы просто добавить сферу класса BmSecurities, но было бы лучше использовать Eloquent.
Кто-нибудь придумал хороший способ использовать составные ключи в отношениях модели laravel, или я должен просто придерживаться метода обзора?
Как выглядит ваше отношение к модели? –
Почему у вас есть 2 BmCoverage ?. –
Извините, я удалил второй - был дубликат. Прямо сейчас я не могу связать эти модели, потому что мне нужно будет сделать это через 2 ключа (например, firmId и personId в случае привязки BmPerson к BmCoverage). Имеет ли это смысл? У меня есть уникальный столбец идентификатора, но мне нужно иметь возможность связываться на основе двух ключей вместо одного. –