Laravel扩展了Eloquent

时间:2014-02-14 20:39:34

标签: php oop laravel eloquent

我是Laravel,命名空间和类的新手。我有一个特定于应用程序的类,它可以正确自动加载并具有自己的命名空间。这个课程扩展了Eloquent。

我想要做的是找到优化代码的方法。这是一个样本:

$collection = Collection::where('user_id', '=', Auth::user()->id)->with('photos')->get();

所以我有一个Collection模型,它扩展了我自己的Appspecific抽象类。上面的代码没有任何问题,但我会做很多事情,我希望优化它以便于阅读。像这样:

$collection = Collection::getMine()->with('photos')->get();

现在,在我的应用专用课程中,我有这个:

public static function getMine() {
    if(\Auth::guest())
        return false;

    return $this->where('user_id', '=', \Auth::user()->id); //would not work coz im not in object context

}

我做错了什么?我是在正确的班级做这个吗?我是否应该在另一个扩展其他内容的类上执行此操作,比如说BuilderClass?

1 个答案:

答案 0 :(得分:3)

您正在寻找Eloquent's scope methods

public function scopeGetMine ($query)
{
    if(\Auth::guest()) return false;

    return $query->where('user_id', \Auth::user()->id);

}

然后按你的意愿使用它:

$collection = Collection::getMine()->with('photos')->get();