Вы передали многомерный массив firstOrCreate
,
firstOrCreate () проверяет все присутствующие аргументы, прежде чем найдет совпадение. Если не все аргументы совпадают, то будет создан новый экземпляр модели.
Если вы хотите проверять только определенное поле, тогда используйте firstOrCreate (['field_name' => 'value']) только с одним элементом в массиве. Это вернет первый соответствующий элемент или создаст новый, если не найдено совпадений.
Если вы используете его внутри цикла, тогда
так должно быть
foreach ($variable as $v) {
$insert = [
'bulan' => $bulan,
'tahun' => $tahun,
'nama_pkp' => $v["nama_pkp"],
'keterangan'=> $v["keterangan"],
'no_faktur_pajak' => $v["no_faktur_pajak"],
'tgl_faktur_pajak' => $tgl_faktur_pajak_format,
'ref' => $v["ref"],
'dpp' => $v["dpp"],
'ppn' => $ppn,
'invoice_no'=> $v["invoice_no"],
'nama_tenant' => $v["nama_tenant"],
'pph_4_deyon' => $v["pph_4_deyon"],
'pph_4_tenant' => $v["ppn"],
'no_p_l_tenant' => $v["no_potong_dan_lapor_tenant"],
'bukpot_oleh_tenant'=> $v["bukti_potong_oleh_tenant"],
'tgl_p_l_penyewa' => $tgl_p_l_penyewa_format,
'pph_p_l_tenant'=> $v["pph_potong_dan_lapor_tenant"],
'note' => $v["note"],
'checklist' => $v["checklist"],
'selisih' => $selisih,
];
$insertData[] = Data::firstOrCreate($insert);
}
нет другого способа, кроме как перебрать большой массив