Php 如果存在数据,则更新,否则插入新数据
我是新来的。我想将数组中的数据插入数据库。我的数据被插入到数据库中,但当数据存在于数据库中时,相同的数据会上载到数据库中。我只想插入数据库中没有的新数据Php 如果存在数据,则更新,否则插入新数据,php,mysql,laravel-5.1,Php,Mysql,Laravel 5.1,我是新来的。我想将数组中的数据插入数据库。我的数据被插入到数据库中,但当数据存在于数据库中时,相同的数据会上载到数据库中。我只想插入数据库中没有的新数据 $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( 'Empl
$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);
我认为,如果数据已经存在,那么您的问题是更新的。这就是你能做的:
$res1 = EmployeeList::firstOrCreate($res);
但是,只有当您的
员工id
设置为主键时,这才有效。我认为,如果数据已经存在,您的问题就会更新。这就是你能做的:
$res1 = EmployeeList::firstOrCreate($res);
但是,只有将您的
员工id
设置为主键时,此操作才有效。根据您的具体操作,有两种方法可以实现此操作;使用firstOrCreate()
和firstOrNew()
firstOrCreate()
将检查进入它的所有值,如果它们都与其中的记录匹配,则它将返回一个结果,否则它将使用您传递的参数创建一个新记录
first或create
的关键在于,如果其中一个参数不匹配,它将创建一个新实例。例如,如果您仅使用拼写不同的Employee\u name
进行了两次插入,那么这将创建一个新实例,即使Employee\u id
没有更改
另一个选项是firstOrNew()
,它执行相同的检查,如果没有找到结果,则返回一个模型实例供您使用。但是,您需要通过调用save()
手动保存此文件
使用这些:
$res1=EmployeeList::firstOrCreate($res)代码>
$res1=EmployeeList::firstOrNew($res)$res1->save()代码>
firstOrCreate()
,如果您想更改或选择输入到模型中的内容,则使用firstOrNew()
如果你想了解这两者之间的更多信息,那么这就很好地概括了这一点。有两种方法可以做到这一点,具体取决于你想做什么;使用
firstOrCreate()
和firstOrNew()
firstOrCreate()
将检查进入它的所有值,如果它们都与其中的记录匹配,则它将返回一个结果,否则它将使用您传递的参数创建一个新记录
first或create
的关键在于,如果其中一个参数不匹配,它将创建一个新实例。例如,如果您仅使用拼写不同的Employee\u name
进行了两次插入,那么这将创建一个新实例,即使Employee\u id
没有更改
另一个选项是firstOrNew()
,它执行相同的检查,如果没有找到结果,则返回一个模型实例供您使用。但是,您需要通过调用save()
手动保存此文件
使用这些:
$res1=EmployeeList::firstOrCreate($res)代码>
$res1=EmployeeList::firstOrNew($res)$res1->save()代码>
firstOrCreate()
,如果您想更改或选择输入到模型中的内容,则使用firstOrNew()
如果您想了解这两者之间的更多信息,那么这可以很好地总结。数据库中的唯一字段是哪个?我的意思是它是
Employee\u ID
?我认为firstorcreate()函数将帮助您,而不是insert(),google onceEvery date同一名员工的姓名不会插入两次也许我的答案可以帮助你。你的数据库中哪一个字段是唯一的?我的意思是它是employee\u ID
?我想firstorcreate()函数会帮你,而不是insert(),google onceEvery date同一个员工的名字不会插入twiceWell也许我的答案可以帮助你。firstOrCreate()函数正在运行。首先,我将表单数据插入到数据库中,然后我将这个数据库数据插入到一个新的数据库中,问题中给出了该数据库的代码。每次我提交表单时,新数据都会在前一个数据之后输入到第二个数据库中。若数据库中有相同的数据,我只想将数组的新值更新为database@Alien可能您的员工id
未设置为索引。请尝试将其设置为索引,您应该明白您的意思。只需运行一个migrate:rollback
,然后再次尝试使用infirstorcreate()函数即可。首先,我将表单数据插入到数据库中,然后我将这个数据库数据插入到一个新的数据库中,问题中给出了该数据库的代码。每次我提交表单时,新数据都会在前一个数据之后输入到第二个数据库中。若数据库中有相同的数据,我只想将数组的新值更新为database@Alien可能您的员工id
未设置为索引。请尝试将其设置为索引,您应该明白您的意思。只需运行一个migrate:rollback
,然后重试