2017-01-02 11 views
1

2つのスコープをチェーンしています。私は、モデルが、両方の範囲の制約に答える行だけを返してくれることを期待しています。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

変更

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、とても簡単\Illuminate\Database\Eloquent\Builderインスタンスを返すようにLocal Scopes。それはまさに医者が言うことです。ありがとう。 – NiRR

関連する問題