2016-10-26 2 views
1

나중에 wheres 등을 추가 할 수있는 모델 만로드하려고합니다.Laravel load only 모델

$query = Users; 

if($request->filter == 1) { 
    $query = $query->where('user_access', 'admin'); 
} 

if($request->otherFilter == 1) { 
    $query = $query->where('user_email', ''); 
) 

$query->get(); 

$ query = Users; 작동하지 않습니다 ..?

답변

1

당신은 같은 Illuminate\Database\Eloquent\Builder 인스턴스를 생성하여 사용할 수 있습니다 :

$query = Users::query(); 

다음은 쿼리 빌더 인스턴스의 추가 쿼리를 추가 할 수 있습니다.

1

당신은 함께 Users 모델의 instanse 만들 수 있습니다

$query = new Users; 

를 그리고 그것으로 작동합니다.

0

많은 쿼리를 수행하려는 경우 Eloquent와 함께 로컬 쿼리 범위를 사용하는 것이 좋습니다. Laravel Eloquent Query Scopes

//App\User.php 

    public function scopePopular($query) 
    { 
     return $query->where('votes', '>', 100); 
    } 

    $users = App\User::popular()->orderBy('created_at')->get(); 

대신 긴 자세한 사람의 사용자 지정 쿼리를 만들 수 있습니다.

+1

질문은 필터로 얼마나 많은 쿼리를 연결하여 코드를 얼마나 깨끗하게 처리 할 수 ​​있는지에 관한 것이 아닙니다. –