2014-07-21 3 views
0

동시에 Laravel에서 웅변적인 결과를 얻으려면 필터 솔루션을 사용하는 것이 가장 좋은 솔루션이라고 생각합니다. 내 모든 컨트롤러에서 내 모든 $ videos 컬렉션을 필터링하고 싶습니다. 컨트롤러를 다시 작성하지 않고 대신 모델에 넣을 수 있습니까?Laravel에서 컬렉션을 필터링하는 가장 좋은 방법은 무엇입니까?

$videos = $videos->filter(function($video){ 
     return $video->isPublished(); 
    }); 
+0

최선의 카드는 모든 검색어에 범위를 추가하는 것입니다. –

+1

'isPublished()'의 기능은 무엇입니까? 데이터베이스의 간단한 부울 열 또는 더 복잡한 것이 있습니까? – Unnawut

답변

0

를 사용하여 쿼리 범위 :

여기 내 필터 코드입니다. here에서 배울 수 있습니다. 그리고 귀하의 경우에는 다음과 같이됩니다 :

class Video extends Eloquent { 
    public function scopePublished($query) 
    { 
     return $query->where('published', '1'); 
    } 
} 

class VideosController extends BaseController { 
    public function showPublishedVideos() 
    { 
     return View::make('published_videos') 
        ->with('videos', Video::published()->take(10)->get()); 
    } 
} 
관련 문제