在Laravel中,我已经在许多控制器中使用了模型的创建方法,
现在,我需要对所有这些控制器中的特定输入执行strip_tags($comment)
,然后才能使用create()
这样的方法将其插入数据库:
Comment:create([
'comment' => $comment,
...
]);
我应该在所有控制器中重复执行此操作吗?
$comment = strip_tags($comment); // < Is it possible to do this on model's file so we don't repeat it every time?
Comment:create([
'comment' => $comment,
...
]);
或者这可以在模型中实现?
答案 0 :(得分:1)
在保存之前,您可以使用model events
进行检查和安排。
在模型类中添加以下方法;
protected static function boot()
{
parent::boot();
self::saving(function ($model) {
$model->comment = strip_tags($model->comment);
// do your pre-checks or operations.
});
}
这里有useful post可供阅读
答案 1 :(得分:0)
有一种直接在模型中进行操作的方法,称为Mutators。如果您的列名是评论,那么mutator函数将被称为 setCommentAttribute 。
public function setCommentAttribute($comment)
{
$this->attributes['comment'] = strip_tags($comment);
}
在此模型用于保存/更新的任何地方,评论数据将通过 set ... 函数进行。