[Laravel 扩展推荐] Laravel Model Sanitize — 清除批量赋值里的非法数据
Laravel Model Sanitize 是 Touhidur Rahman 的一个包,用于在创建和更新记录时处理模型数据的 sanitization 过程。
如果对 User::create()
进行以下调用,Sanitize 包将自动删除不可填充的数据:
// Using the package's Sanitizable triat
use Touhidurabir\ModelSanitize\Sanitizable;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
use Sanitizable;
}
// 不是自动填充的字段,自动移除
$data = [
'email' => 'somemail@test.com',
'password' => 'password',
'data' => 'some data' // 无效字段
];
User::create($data);
Sanitizable trait
将自动适用于各种创建和更新模型方法(例如,updateOrCreate、 firstOrCreate 等)。
如果你在模型上使用 $fillable
,则不需要使用这个包,但是,如果你使用 $guarded = []
, 则该包将丢弃表中没有的列。
该包还有两个静态方法,用于将数据与相应的字段分离,以获取有效/无效数据:
$data = [
'email' => 'somemail@test.com',
'password' => 'password',
'data' => 'some data',
'name' => 'Test User'
];
// 获取有效字段
User::sanitize($data);
/*
[
'email' => 'somemail@test.com',
'password' => 'password',
'name' => 'Test User'
]
*/
// 获取有效属性
User::gibberish($data);
/*
[
'data' => 'some data',
]
*/
您可以了解更多关于这个包的信息,获得完整的安装说明,并在 GitHub 上查看源代码。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。