Проблема с сохранением данных в отношения Polymorphi c laravel - PullRequest
0 голосов
/ 02 мая 2020

У меня есть некоторые сомнения в отношении полиморфизма 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

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