Я не верю, что это правильный путь, и я надеюсь, что кто-то придет и даст правильный ответ, но это мой грязный хак. В моем наборе данных у меня есть столбец для фамилии, и все записи, имеющие какое-либо функциональное назначение, должны иметь фамилию, поэтому я добавляю оператор -if- if (!empty($interest['lastname']))
, проверяющий, чтобы "фамилия" не была пустой перед сохранением.
$for_insert = array_chunk($insert, 10000); // this was 100, but the chunking was causing the system to only import the first 100 records, even though the success message said it imported all of them - LW 1/25/2019
foreach ($for_insert as $insert_item) {
if ($modelName == 'Interest') {
foreach ($insert_item as $item) {
$interest = new $model;
foreach ($item as $field => $value) {
if ($field != 'meta') {
$interest->$field = $value;
}
}
$interest->created_by_id = auth()->user()->id;
$interest->created_by_team_id = $request->input('church_id');
if (!empty($interest['lastname']))
{
$interest->save();
}
// For some reason, created_by_team_id was null on initial save, do it again
$interest->created_by_team_id = $request->input('church_id');
if (!empty($interest['lastname']))
{
$interest->save();
}
Таким образом, система проходит процесс импорта всех строк в CSV, независимо от того, имеют они данные или нет, но сохраняет только те записи, которые имеют значение фамилии. Это выполняет то, что мне нужно, но я знаю, что должен быть более чистый способ сделать это.
Я считаю, что должен быть способ сделать это, при котором запись должна быть пропущена, только если все значения в строке / записи пусты. Поэтому, если установлено одно значение, оно вставит и создаст запись, но если все значения в строке будут пустыми, запись будет пропущена. Надеюсь, кто-нибудь когда-нибудь придет и предоставит это более красноречивое решение.