У меня есть массив почтовых индексов, поступающих со входа:
$postCodes = collect(["BK13TV", "BK14TV", "BK15TV", "BK16TV"]);
В моей базе данных у меня уже есть два почтовых кода - "BK13TV", "BK16TV".
Поэтому я хотел бы запустить что-то вроде этого:
$postCodeModels = PostCode::findManyOrCreate($postCodes->map($postCode) {
return ['code' => $postCode]
})
Мой первоначальный подход состоял в том, чтобы загрузить все почтовые коды, а затем разнести их по почтовым кодам из входных данных следующим образом:
PostCode::createMany($postCodes->diff(PostCode::all()->pluck('code')))
Однако здесь это означает, что я загружаю все содержимое таблицы post_codes, что кажется неправильным.
В идеальном случае это вернет все модели почтовых индексов, соответствующие переданным почтовым индексам, а также создаст записи для почтовых индексов, которых не было в базе данных.