Php laravel雄辩地创建新记录,而无需在save()方法之前重复new关键字

Php laravel雄辩地创建新记录,而无需在save()方法之前重复new关键字,php,laravel,eloquent,Php,Laravel,Eloquent,我在Laravel中编写了以下代码: $setting = new Setting; $setting->name = 'name1'; $setting->save(); $setting->name = 'name2'; $setting->save(); 执行后,我在数据库中只看到name2 但在我执行此代码之后: $setting = new Setting; $setting->name

我在Laravel中编写了以下代码:

    $setting = new Setting;
    $setting->name = 'name1';
    $setting->save();
    
    $setting->name = 'name2';
    $setting->save();
执行后,我在数据库中只看到
name2
但在我执行此代码之后:

    $setting = new Setting;
    $setting->name = 'name1';
    $setting->save();
    $setting = new Setting;
    $setting->name = 'name2';
    $setting->save();
两条记录都保存正确,因此我有
name1
name2

我不明白为什么用
$setting=新设置重新分配
$setting
变量这么重要吗

$setting
的类型是
设置对象
为什么要重新分配它?这有什么帮助

它是如何工作的?为什么第一次剪断不起作用

例如,在本PHP代码段中:

<?php 
class Foo{
    public $name;
    public function bar(){
        echo $this->name;
    }
}
$obj1 = new Foo;
$obj1->name = 'object_one';
$obj1->bar();
//////$obj1 = new Foo;// we don't need this line in this snippet 
$obj1->name = 'object_two';
$obj1->bar();
var_dump($obj1); // answer is object(Foo)#1
如果在
设置的
$filleble
属性中有
'name'
,则可以使用
create()

Setting::create(['name'=>'name1']);
设置::创建(['name'=>'name2']);
您需要在代码中重新分配它的原因是
$setting
绑定到
设置
模型。如果不重新分配,则所做的任何操作都会导致更新,而不是插入新设置

下面是一个表格来说明:

代码
$setting
设置#2{
+id:2
+名称:'name3'
+创建时间:'2021-03-19 20:00:20'
+更新时间:'2021-03-19 20:00:20'

这一点很重要,因为如果不重新指定
$setting=new setting
,您就是在修改同一条记录,而不是创建新记录。注意
new
关键字。
$setting = new Setting;
Setting#1{}
$setting->name = 'name1';
Setting#1{
  +name: 'name1'
}
$setting->save();
Setting#1{
  +id: 1
  +name: 'name1'
  +created_at: '2021-03-19 20:00:00'
  +updated_at: '2021-03-19 20:00:00'
}
$setting->name = 'name2';
Setting#1{
  +id: 1
  +name: 'name2'
  +created_at: '2021-03-19 20:00:00'
  +updated_at: '2021-03-19 20:00:00'
}
$setting->save();
Setting#1{
  +id: 1
  +name: 'name2'
  +created_at: '2021-03-19 20:00:00'
  +updated_at: '2021-03-19 20:00:05'
}
$setting = new Setting;
Setting#2{}
$setting->name = 'name3';
Setting#2{
  +name: 'name3'
}
$setting->save();
Setting#2{
  +id: 2
  +name: 'name3'
  +created_at: '2021-03-19 20:00:20'
  +updated_at: '2021-03-19 20:00:20'
}