我有一个自定义类,该类对NAV服务器执行getItems()请求并返回一个数组。我能够收集($ array)并在其中使用所有收集功能,例如groupBy,但我似乎找不到找到使$ appends起作用的方法。 例如,我希望此类具有
public function getPriceAttribute(){
return $this->customCollection->Unit_Price*100 . 'Euro';
}
我在网上找到的所有文档都与型号有关。我知道这是Model的事,但是如果没有数据库表就可以使它正常工作,因为所有数据都来自NavClient
谢谢
答案 0 :(得分:2)
此功能在Model
类中进行了编码,因此可能无法轻松地将其用于非模型。相反,您可以将相关代码复制到您的类中。
Laravel在__get()
magic function中使用Model class。然后在HasAttributes
特性中,依次选择checks for the existence of an mutator method和calls the mutator。
public function hasGetMutator($key)
{
return method_exists($this, 'get'.Str::studly($key).'Attribute');
}
protected function mutateAttribute($key, $value = null)
{
return $this->{'get'.Str::studly($key).'Attribute'}($value);
}
public function __get($key)
{
if($this->hasGetMutator($key)) {
return $this->mutateAttribute($key);
}
}
注意:仅当不存在带有请求名称的公共属性(在您的情况下为__get()
时)才会调用price
方法。
更新:其中有a Laravel Core Adventures video会更详细。