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
属性的。