假设我有一个名为cake的字段的对象。此cake对象作为varchar的类型字段,并且必须具有cake-(任意数字)格式。我可以使用mutator来确保某人没有设置错误格式的字符串吗?
例如,如果另一个开发人员尝试执行cake->type = c2;
,我应该从我的mutator中抛出错误,还是应该在其他地方完成?
这是最佳做法还是有更好的地方来验证制定者?
答案 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()..
方法在课堂上写作。)
您的模型事件很少,例如:creating
,saving
,updating
,deleting
以及我所知道的其他一些事件。