Laravel 6.x значение по умолчанию для первого отношения - PullRequest
1 голос
/ 07 марта 2020

Я хочу установить значение по умолчанию для первого элемента отношения и после этого другого. Например:

Клиент может иметь несколько адресов. Таблица адресов имеет столбец main_address. Когда я создаю клиента и первый адрес для него, Laravel должен затем присвоить столбцу main_address значение 1. Второй должен получить значение 0 (если не указано другое).

Может ли Laravel делать это?

Мой процесс создания клиента заключается в следующем:

$customer = \App\Customer::create(["data"]);
$customer->customerAddress()->create(["data"]);
$customer->contactPerson()->create(["data"]);

Можно ли улучшить этот процесс?

Отношения много к одному. У клиента может быть несколько контактных лиц и адресов.

1 Ответ

1 голос
/ 07 марта 2020

Вы можете сделать это

$customer = \App\Customer::create(["data"]);
$address = $customer->customerAddress()->create(["data"]);

$main_address_exists = $customer->customerAddress()->where('main_address', 1)->first();

    if (!$main_address_exists) {

        $address->main_address = 1;
        $address->save();

    }

Таким образом, вы сначала проверяете, есть ли у этого клиента адрес с полем main_address, 1 и, если у него нет такой записи, последний адрес будет равен 1

ИЛИ

$customer = \App\Customer::create(["data"]);

    $data_for_addresses = [
        'main_address' => 0
    ];

    $main_address_exists = $customer->customerAddress()->where('main_address', 1)->first();

    if (!$main_address_exists) {

        $data_for_addresses['main_address'] = 1;

    }

   $customer->customerAddress()->create($data_for_addresses);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...