雄辩的-负载访问器和模型数据

时间:2018-11-05 11:49:05

标签: eloquent

我的模型渴望通过访问器加载很多东西。我想更改它以在每种情况下指定访问器。如何在查询中包含此类访问器,以便获得基本模型数据以及访问器数据

访问者以前会渴望加载:

protected $appends = [
  'status',
] 

但是,如果我摆脱了急切的加载,并且想要包括这个配件,那么:

public function getStatusAttribute() {
        return self::STATUS_ACTIVE;
    }

然后我可以根据文档进行此操作:

$prod = \App\Product::find(736)->status;

可以,但是我没有基本的模型数据。

我不能做:return $prod = \App\Product::find(736)->with('status')->first()

显示错误:Call to undefined relationship [status] on model

那么如何添加此类访问器以包含在模型数据中?


编辑: 正如Staudenmeir所说,我可以\App\Product::find(736)->append('status');

这可以解决单个结果。但是,如何为许多结果附加数据? appendappends都不起作用:

此:\App\Product::whereIn([34, 55])->appends('status'); 产生"Method appends does not exist.",

我看到您可以在“-> paginate()”上使用“ appends”

$products = \App\Product::whereIn([34, 55])
                    ->paginate(12)
                    ->appends('status');

但这会将其作为查询字符串附加到url。很奇怪-我想以与json响应中单个结果相同的方式附加它。

1 个答案:

答案 0 :(得分:0)

您尚未先获取集合,然后再访问result的属性。

$prod = \App\Product::find(736);

$status = $prod->status;