我有一个User
模型,其属性为is_active
。
当我在foreach循环中时,我不想使用以下内容:
echo if ( $user->is_active == 0 ) 'not active' : 'active'
实施此方法的最佳方法是什么?在isActive()
模型上写一个User
方法并将逻辑放在那里?
答案 0 :(得分:2)
您可以采取一些方法。
在您的模型上创建:
public function getFormattedActiveMethod() {
return $this->attributes['active'] ? 'active' : 'not active';
}
然后您可以像$user->formattedActive
一样使用它(或者您想要调用它,只要您的方法名称匹配get CamelCaseName Attribute())。
您还可以将此属性添加到$appends
属性数组中,以便在将模型转换为array / json时显示该属性。
只需创建一个新类,只是为了向您的视图显示数据。这是防止模型膨胀并分离逻辑的好方法。 有一些软件包可以帮助您实现它,例如robclancy/presenter,laracasts/Presenter,ShawnMcCool/laravel-auto-presenter甚至League's Fractal,它们也可以帮助您构建一致的API。 根据项目的规模,最好采用这种方法。