技术学习 laravel 批量设置 fiilable的办法

laravel 批量设置 fiilable的办法

149
 

在 Laravel 中,通常你会在模型的 fillable 属性中指定哪些字段可以被批量赋值。这是一个常见的安全实践,因为它可以防止不应被赋值的字段(如 id 或 password)被意外地修改。

如果你有很多模型,并且想要批量设置 fillable 属性,有几种方法可以实现:

1. 使用模型基类

你可以创建一个模型基类,并在其中设置 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 继承  
}

2. 使用服务提供者或启动脚本

你可以在服务提供者或启动脚本中动态设置 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;  
    }  
}

3. 使用模型工厂或迁移

在某些情况下,你可能想要根据数据库结构动态设置 fillable 属性。这通常涉及到检查数据库迁移或模型工厂配置。然而,这种方法可能比较复杂,且不易于维护。通常建议明确指定 fillable 属性,以确保代码清晰和安全。

注意事项

  • 安全性:确保你仔细考虑哪些字段应该被设置为可填充。不要将敏感字段(如密码、令牌等)包含在 fillable 属性中。

  • 维护性:随着项目的发展,你可能需要添加或删除可填充字段。确保你的代码结构易于维护和扩展。

  • 文档:为你的代码添加注释和文档,以便其他开发人员了解你是如何设置 fillable 属性的。

更新:2024-04-07 15:20:11 © 著作权归作者所有
QQ
微信