Laravel Eloquent Model返回人类价值

时间:2015-04-07 13:00:21

标签: laravel eloquent

我有一个User模型,其属性为is_active。 当我在foreach循环中时,我不想使用以下内容: echo if ( $user->is_active == 0 ) 'not active' : 'active'

实施此方法的最佳方法是什么?在isActive()模型上写一个User方法并将逻辑放在那里?

1 个答案:

答案 0 :(得分:2)

您可以采取一些方法。

方法1:Acessor

在您的模型上创建:

public function getFormattedActiveMethod() {
    return $this->attributes['active'] ? 'active' : 'not active';
}

然后您可以像$user->formattedActive一样使用它(或者您想要调用它,只要您的方法名称匹配get CamelCaseName Attribute())。

您还可以将此属性添加到$appends属性数组中,以便在将模型转换为array / json时显示该属性。

方法2:演示者模式

只需创建一个新类,只是为了向您的视图显示数据。这是防止模型膨胀并分离逻辑的好方法。 有一些软件包可以帮助您实现它,例如robclancy/presenterlaracasts/PresenterShawnMcCool/laravel-auto-presenter甚至League's Fractal,它们也可以帮助您构建一致的API。 根据项目的规模,最好采用这种方法。