QQ扫一扫联系
在 Laravel 中,通常你会在模型的 fillable 属性中指定哪些字段可以被批量赋值。这是一个常见的安全实践,因为它可以防止不应被赋值的字段(如 id 或 password)被意外地修改。
如果你有很多模型,并且想要批量设置 fillable 属性,有几种方法可以实现:
你可以创建一个模型基类,并在其中设置 fillable 属性。然后,让你的其他模型都继承自这个基类。
// app/Models/BaseModel.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
protected $fillable = [
// 这里列出所有模型共有的可填充字段
];
}
// app/Models/YourModel.php
namespace App\Models;
class YourModel extends BaseModel
{
// 这里可以添加 YourModel 特有的逻辑,但 fillable 属性会从 BaseModel 继承
}
你可以在服务提供者或启动脚本中动态设置 fillable 属性。这通常在你需要基于某些条件或配置动态生成 fillable 列表时很有用。
// app/Providers/AppServiceProvider.php
namespace App\Providers;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
use App\Models\YourModel;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Schema::defaultStringLength(191);
$fillableFields = ['field1', 'field2', 'field3']; // 这里根据你的逻辑生成字段列表
YourModel::$fillable = $fillableFields;
}
}
在某些情况下,你可能想要根据数据库结构动态设置 fillable 属性。这通常涉及到检查数据库迁移或模型工厂配置。然而,这种方法可能比较复杂,且不易于维护。通常建议明确指定 fillable 属性,以确保代码清晰和安全。
安全性:确保你仔细考虑哪些字段应该被设置为可填充。不要将敏感字段(如密码、令牌等)包含在 fillable 属性中。
维护性:随着项目的发展,你可能需要添加或删除可填充字段。确保你的代码结构易于维护和扩展。
文档:为你的代码添加注释和文档,以便其他开发人员了解你是如何设置 fillable 属性的。