在使用 Laravel 更新模型时,可以通过使用 fillable
或 guarded
属性来指定哪些字段可以被批量赋值。如果你想在更新模型时忽略(除了)某些字段,可以使用以下方法:
fillable
属性:在模型类中定义 fillable
属性,该属性是一个包含可以批量赋值的字段名的数组。只有在该数组中的字段才会被更新,其他字段将被忽略。你可以在更新模型时使用 fill
或 update
方法来指定要更新的字段。protected $fillable = ['field1', 'field2', 'field3'];
guarded
属性:在模型类中定义 guarded
属性,该属性是一个包含不能被批量赋值的字段名的数组。在更新模型时,除了在该数组中的字段,其他字段都会被更新。你可以在更新模型时使用 fill
或 update
方法来指定要更新的字段。protected $guarded = ['field4', 'field5'];
需要注意的是,fillable
和 guarded
属性不能同时使用,只能选择其中一种方式来指定可更新的字段。
以下是一个示例,演示如何在使用 JSON 和 Laravel 更新模型时忽略某些字段:
// 假设你有一个 User 模型类
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
}
// 更新模型时忽略 password 字段
$user = User::find(1);
$user->fill([
'name' => 'John Doe',
'email' => 'john@example.com',
'password' => 'newpassword' // 这个字段会被忽略
]);
$user->save();
在上面的示例中,password
字段被忽略,因为它不在 fillable
属性中。只有 name
和 email
字段会被更新。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。你可以在腾讯云官方网站上找到更多关于这些产品的详细信息和介绍。
腾讯云云服务器(CVM)产品介绍链接:https://cloud.tencent.com/product/cvm 腾讯云数据库(TencentDB)产品介绍链接:https://cloud.tencent.com/product/cdb
领取专属 10元无门槛券
手把手带您无忧上云