Laravel Eloquent 模型 Return 人类价值

Laravel Eloquent Model Return Human value

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

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

您可以采用几种方法。

方法一:Acessor!

在您的模型上创建:

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

然后您可以像这样使用它:$user->formattedActive(或者任何您想要调用的名称,只要您的方法名称匹配 getCamelCaseNameAttribute())。

您还可以将此属性添加到 $appends 属性 数组中,这样当您将模型投射到 array/json 时它就会显示出来。

方法 2:Presenter 模式

只需创建一个新的 class 即可将数据呈现给您的视图。这是防止模型膨胀并分离逻辑的好方法。 有一些包可以帮助您实现它,例如 robclancy/presenter, laracasts/Presenter, ShawnMcCool/laravel-auto-presenter and even League's Fractal,它们也可以帮助您构建一致的 API。 根据项目的大小,最好采用这种方法。