Laravel将$fillable应用于update()

因为所有的 Eloquent 模型都默认不可进行批量赋值,而 $fillable 属性可以看作是批量赋值的“白名单”,定义了它就可以批量赋值了,但也只能应用于 create() 方法,如想要在 update() 方法中同样有效,须结合$request->only()与Eloquent模型的getFillable()一起使用:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $primaryKey = 'id';
    /**
     * 可以被批量赋值的属性。
     *
     * @var array
     */
    protected $fillable = ['name', 'avatar', 'job'];
}

用法举例:

$result = App\User::where('id', $id)->update($request->only((new App\User)->getFillable()));

发表评论

邮箱地址不会被公开。 必填项已用*标注