2017-01-02 50 views
1

我正在链接两个范围。我期望模型将返回只有在两个范围内回答约束的行。Laravel 5.3范围链不按预期工作

public function scopeHasImages() { 
    return $this->has('images'); 
} 

public function scopeCompleted() { 
    return $this->where('status', 'complete'); 
} 

,然后我用

Subject::completed()->hasImages()->limit(100)->get()[0]->status; 

不幸的结果是 “待定”

只是为了把事情说清楚,这个工程:

Subject::completed()->limit(100)->get()[0]->status; 

结果为 “完成”

回答

1

更改您Local Scopes返回一个\Illuminate\Database\Eloquent\Builder实例:

public function scopeHasImages($query) 
{ 
    return $query->has('images'); 
} 

public function scopeCompleted($query) 
{ 
    return $query->where('status', 'complete'); 
} 

然后链接的范围将工作:

Subject::completed()->hasImages()->limit(100)->get(); 
+0

AHHHHH,就这么简单。它正是文档所说的。谢谢。 – NiRR