设置值时使用Laravel mutators作为验证

时间:2015-11-06 10:35:20

标签: php laravel eloquent laravel-5.1

假设我有一个名为cake的字段的对象。此cake对象作为varchar的类型字段,并且必须具有cake-(任意数字)格式。我可以使用mutator来确保某人没有设置错误格式的字符串吗?

例如,如果另一个开发人员尝试执行cake->type = c2;,我应该从我的mutator中抛出错误,还是应该在其他地方完成?

这是最佳做法还是有更好的地方来验证制定者?

1 个答案:

答案 0 :(得分:0)

您可以在模型中使用模型事件,例如在模型结束时,在课堂之外:

Cake::saving(function($model) {
    if($model->type != [your condition])
       return false; 
       // In this case your model won't be saved, also you can throw an error here
});

它更像是预防,而不是确切的验证。但它更好,因为您的模型可以在关系中创建为孩子,因此这些方法每次都会运行,您不必调用单独的验证。

(您也可以用public static function boot()..方法在课堂上写作。)

您的模型事件很少,例如:creatingsavingupdatingdeleting以及我所知道的其他一些事件。