综述
firstOrNew 需要手动调用 save,才会保存到数据库。适合同时需要修改其他属性的场景。
firstOrCreate 会自动保存到数据库。适合不需要额外修改其他属性的场景。
firstOrCreate 一定要设置 model 的 fillable, 否则会报 MassAssignmentException 的错误。
Laravel Model 的 fillable (白名单)与 guarded (黑名单)即,create 受 fillable 的限制,但是 save 不受影响。
firstOrCreate
public function info10()
{
//如果没有就新增 有的话不变化
$stu=Student::firstOrCreate(
['name'=>'info10']
);
}
//允许批量赋值
public $fillable = array('name', 'age');
//不允许批量赋值的
public $guarded=array('id');
firstOrNew
public function info11()
{
//如果没有就新增 有的话不变化
$stu=Student::firstOrNew(
['name'=>'info11']
);
$stu->save();
}