gpt4 book ai didi

php - 如果数据存在则更新,否则插入新数据

转载 作者:行者123 更新时间:2023-11-30 22:35:25 25 4
gpt4 key购买 nike

我是 Laravel 的新手。我想将数组中的数据插入数据库。我的数据已插入数据库,但当数据存在于数据库中时,相同的数据会上传到数据库中。我只想插入不在数据库中的新数据。

$str=$this->entry();
$end=$this->exit_entry();

$st=array_chunk($str,5);
$ex=array_chunk($end,5);
$result=array();
foreach($st as $v1){
$tmp = array(
'Employee_id'=>$v1[0],
'Employee_name'=>$v1[1],
'Date' => $v1[2],
'Day' =>$v1[3],
'Time1' => $v1[4]
);

foreach($ex as $v2){
if($v2[1] == $v1[1] && $v2[0] == $v1[0] && $v2[2] == $v1[2] && $v2[3] == $v1[3] ){
$tmp['Time2']=$v2[4];
}
}
$result[] = $tmp;
}

foreach($result as $res) {
$res1 = EmployeeList::insert($res);
}

//var_dump($res1);

最佳答案

有两种方法可以解决这个问题,具体取决于您想要做什么;使用 firstOrCreate()firstOrNew()

firstOrCreate() 将检查所有进入其中的值,如果它们都与那里的记录匹配,那么它将返回一个结果,否则它将创建一个新的记录您传递的参数。

firstOrCreate 的问题在于,如果其中一个参数不匹配,那么它将创建一个新实例。例如,如果您只用拼写不同的 Employee_name 进行了两次插入,那么这将创建一个新实例,即使 Employee_id 没有改变。

另一个选项是 firstOrNew(),它执行相同的检查,如果没有找到结果,它会返回一个模型实例供您使用。但是,您需要通过调用 save() 手动保存它。

这些的使用:

  • $res1 = EmployeeList::firstOrCreate($res);
  • $res1 = EmployeeList::firstOrNew($res); $res1->保存();

如果您可以直接插入而不需要摆弄插入到模型中的内容,然后使用 firstOrCreate(),如果您想更改或选择输入的内容完全进入模型,然后使用 firstOrNew()

如果您想了解两者之间的更多信息,那么这 post总结的很好。

关于php - 如果数据存在则更新,否则插入新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32675795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com