[英]Use Eloquent model method when querying database
有了一个称为Foo
的Eloquent模型,其中包括一个名为bar
的方法,我可以从另一个函数baz
查询数据库时使用bar
吗? 否则,我必须为bar
返回的每个对象调用baz
。
我想做这样的事情:
class Foo extends Model
{
public function bar
{
return Bar::where('foo_id', $this->id)->sum('amount');
}
public function baz
{
return self::where('col', true)->with('bar')->take(5);
}
}
当然可以,但是最好的办法是使用范围。 这就是定义范围的方式。
public function scopeBaz($query)
{
return $query->where('col', true)->with('bar')->take(5);
}
您可以使用雄辩的查询范围 :
class Foo extends Model
{
public function scopeBar($query)
{
return $query->where('foo_id', $this->id)->sum('amount');
}
public function baz
{
return Bar::where('col', true)->bar()->take(5);
}
}
另外,不仅可以在模型中,还可以在控制器和其他类中使用bar()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.