如何首先检查记录是否存在并且不重复方法

时间:2019-04-02 09:20:57

标签: laravel eloquent

如何使用方法firstOr这样在ex中创建laravel

我尝试过如下操作,这样做很好吗?

$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);

我有这样的错误

  

语法错误或访问冲突:1064您的SQL错误   句法;检查与您的MariaDB服务器相对应的手册   版本

我有添加代码AppServiceProvider

Schema::defaultStringLength(191);

我的代码怎么了?

2 个答案:

答案 0 :(得分:0)

我假设您正在检查数据库中的所有列,这看起来应该更加整洁

<div class="flex-parent">
 <div class="flex">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
 </div>
</div>

答案 1 :(得分:0)

您已将多维数组传递给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);
}

没有其他方法可以遍历大数组