Eloquent - $fillable 的真正用途是什么

laravel

1个回答

写回答

薛杨

2025-06-15 20:30

+ 关注

Laravel
Laravel

什么是 Eloquent - $fillable

Laravel 中,Eloquent 是一个强大且易于使用的 ORM(对象关系映射)工具,用于与数据库进行交互。在使用 Eloquent 时,$fillable 属性是一个非常重要的概念,它定义了可以批量赋值的属性,以保护模型免受潜在的安全风险。本文将介绍 $fillable 的真正用途,并提供一些案例代码作为示例。

使用 $fillable 保护模型

Laravel 中,每个 Eloquent 模型都对应数据库中的一张表。默认情况下,Eloquent 允许用户通过数组赋值的方式来填充模型的属性。然而,这种方式可能会导致潜在的安全风险,因为用户可以通过传递一个包含非预期属性的数组来修改模型的数据。

为了防止这种情况的发生,Laravel 提供了 $fillable 属性,该属性允许我们显式地定义哪些属性可以被批量赋值。只有在 $fillable 数组中包含的属性才能被批量赋值,其他属性将被忽略。

案例代码

假设我们有一个名为 User 的 Eloquent 模型,该模型对应数据库中的 users 表。让我们看一个使用 $fillable 属性的示例:

php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model

{

protected $fillable = ['name', 'emAIl', 'password'];

}

在上面的示例中,我们定义了一个 User 模型,并在 $fillable 数组中指定了可批量赋值的属性。在这种情况下,我们允许用户通过数组赋值的方式同时设置 nameemAIlpassword 属性。

示例说明

通过使用 $fillable 属性,我们可以确保只有指定的属性可以被批量赋值,从而保护模型免受潜在的安全威胁。这对于处理用户输入的表单数据特别有用,因为我们可以明确指定哪些属性可以被批量赋值,从而防止用户恶意修改其他属性。

例如,假设我们有一个注册表单,用户可以输入他们的姓名、电子邮件和密码。通过使用 $fillable 属性,我们可以确保只有这些属性可以被批量赋值,从而防止用户通过修改其他属性来绕过验证或者执行其他恶意操作。

总而言之,$fillable 属性在 Laravel 的 Eloquent 中起到了保护模型免受潜在安全风险的作用。通过明确指定可批量赋值的属性,我们可以防止用户恶意修改模型的数据。这是一个非常有用的功能,特别是在处理用户输入的场景中。

希望本文对你理解和使用 Eloquent - $fillable 有所帮助!

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号