У меня есть некоторые сомнения в отношении полиморфизма c. У меня есть схема, к которой документ может быть подключен к секторам, если 'senderable_type' - это Sector или, к адресам, если это Address. Основываясь на значении, полученном из формы, я знаю, связано ли это с Сектором или с Адресом, получая его ID. Но ... как это сделать? Не могли бы вы мне помочь? Каждый документ может быть связан с одним сектором или с одним адресом. Можно ли использовать Polymorphi c для этого использования?
Это мои отношения с моделями:
//Document.php
public function documentable()
{
return $this->morphTo();
}
//Sector.php
public function documents()
{
return $this->morphMany(Document::class, 'senderable');
}
//Address.php
public function documents()
{
return $this->morphMany(Document::class, 'senderable');
}
И вот код моей функции хранилища в моем контроллере:
if (is_null($request->get('sender_id'))) {
$type = "App\Sector";
$sender_id = $request->get("sector_id");
} else {
$type = "App\Address";
$sender_id = $request->get("sender_id");
}
$documento = Document::create(
[
'company_id' => $request->get("company_id") ?? Auth::user()->company_id,
'date' => Carbon::createFromFormat("d/m/Y", $request->get("date")),
'type' => $request->get("origin"),
'subject' => $request->get("subject"),
'senderable_type' => $type,
'senderable_id' => $sender_id,
'protocol_number' => '0',
'protocol_date' => Carbon::now(),
'is_reserved' => false,
'created_user_id' => Auth::id(),
]
);
На самом деле я проверяю, связано ли это с сектором или с адресом, и вручную сохраняю в БД. Я не знаю, лучший ли это путь ...
![enter image description here](https://i.stack.imgur.com/QVWqJ.png)