我有一个产品型号
class Product extends Model
{
...
public function prices()
{
return $this->hasMany('App\Price');
}
...
}
我想添加一个将返回最低价格的函数,在控制器中,我可以使用以下方法获取值:
Product::find(1)->lowest;
我在产品模型中添加了此代码:
public function lowest()
{
return $this->prices->min('price');
}
但我收到一个错误消息:
Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
如果我使用Product::find(1)->lowest();
,它将起作用。可以Product::find(1)->lowest;
上班吗?
任何帮助,将不胜感激。
当您尝试以变量形式访问模型中的函数时,laravel会假定您正在尝试检索相关模型。他们称它们为动态特性。您需要的是自定义属性。
Laravel 6文档:https ://laravel.com/docs/6.x/eloquent-mutators
在模型中添加以下方法:
public function getLowestAttribute()
{
//do whatever you want to do
return 'lowest price';
}
现在您应该可以像这样访问它:
Product::find(1)->lowest;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句