Laravel firstOrNew 与 firstOrCreate 的区别

文章目录

    例如:

    $item = App\Deployment::firstOrNew(
        ['name' => '问答小程序'], ['delayed' => 1]
    );
    
    • firstOrNew 需要手动调用 save,才会保存到数据库。适合同时需要修改其他属性的场景。
    • firstOrCreate 会自动保存到数据库。适合不需要额外修改其他属性的场景。

    注意:MassAssignmentException

    firstOrCreate 一定要设置 model 的 fillable, 否则会报 MassAssignmentException 的错误。

    参考: Laravel Model 的 fillable (白名单)与 guarded (黑名单)

    即,create 受 fillable 的限制,但是 save 不受影响。