使用名为Foo
的Eloquent模型,包括一个名为bar
的方法,在查询数据库时,我可以从另一个函数baz
使用bar
吗?否则,我必须为baz
返回的每个对象调用bar
。
我想做这样的事情:
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);
}
}
答案 0 :(得分:0)
当然可以,但最好是使用范围。这就是定义范围的方法。
public function scopeBaz($query)
{
return $query->where('col', true)->with('bar')->take(5);
}
答案 1 :(得分:0)
您可以使用Eloquent query scopes:
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()
,而不仅仅是在模型中。