繁体   English   中英

查询数据库时使用口才模型方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM