Laravel之firstOrCreate/firstOrNew

综述

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();
    }

 

发布了659 篇原创文章 · 获赞 73 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/fujian9544/article/details/104085571