我是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?
答案 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();