Проблема сохранения данных записи с помощью saveMany

У меня ниже структура базы данных.

У меня есть пользователи и один пользователь имеет много паспортов, поэтому я создал отношение, как пользователь hasmany паспорта и паспорт принадлежат Пользователю в уважаемых моделях.

Когда я обновляю данные пользователя, введите 2-3 номера паспорта и попытайтесь сохранить данные в таблице user_passport с помощью saveMany. Идентификатор первичного ключа и идентификатор пользователя сохраняются в базе данных, но номер паспорта равен NULL. Вот процесс сохранения:

$user = $this->find($id); 
$user->passports()->delete(); 
$new[] = new UserPassport(['passport' => '123456789', 'created_by' => $user->id, 'updated_by' => $user->id]); 
$new[] = new UserPassport(['passport' => '111111111', 'created_by' => $user->id, 'updated_by' => $user->id]); 
$user->passports()->saveMany($new);

Пожалуйста, обновите, если кто-то столкнулся с той же проблемой.

1 ответ

  1. Есть более простой способ выполнить то, что вы хотите. Вы можете просто сделать что-то вроде этого:

    $user->passports()->delete();
    
    $user->passports()->create(['passport' => '123456789', 'created_by' => $user->id, 'updated_by' => $user->id]);
    $user->passports()->create(['passport' => '123456789', 'created_by' => $user->id, 'updated_by' => $user->id]);
    

    Да, это будет запускать отдельные запросы, но код очень ясный и читаемый.