Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果存在数据,则更新,否则插入新数据_Php_Mysql_Laravel 5.1 - Fatal编程技术网

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
,然后重试