2017-05-02 8 views
0

Eloquent 범위와 비슷한 사용자 지정 DB 쿼리 메서드를 만드는 방법을 찾고 있습니다.Laravel 4.2에서 사용자 지정 DB 쿼리 작성기 메서드를 만드는 방법

예를

class User extends Eloquent 
{ 
    public function getActiveUsers() 
    { 
     //... 
     //... 
     $data = DB::table('myTable') 
      ->where('active', 1) 
      ->myFun($var1, $var2) //<-- custom method 
      ->limit(10)->get(); 
     dd($data); 
    } 
} 

를 들어

그리고 myFun() 내가 절은 메인 쿼리에 추가됩니다 마침내이

public function myFun() 
{ 
    if(condition 1) 
    { 
     $query->where('col', 12) 
    } 
    if(condition 2) 
    { 
     $query->where($va2, 'test') 
    } 
} 

과 같은 몇 가지 일을해야합니다.

나는 this solution을 찾았지만 Laravel 5입니다. Laravel 4.2를 찾고 있습니다.

참고 : 응용 프로그램이 생산 단계에 있으므로 범위를 사용할 수 없으므로 이와 비슷한 것을 만들려고합니다.

+0

난 당신이'DB는 ::들을 사용할 수있을 것 같아요() 함수 ($의 SQL을 {})'가 하나 개의 라인에서 조회 인스턴스를 얻을 수 있습니다. –

답변

-1

귀하의 요구 사항에 따라하면 아래의 개념을 따르

class User extends Eloquent 
{ 
    public $query = null; 
    public function getActiveUsers() 
    { 
     //... 
     //... 
     $this->query = DB::table('myTable'); 
     $this->myFun($var1, $var2) //<-- custom method 
     $data = $this->query->limit(10)->get(); 
     dd($data); 
    } 

    public function myFun() 
    { 
     if(condition 1) 
     { 
      $this->query->where('col', 12); 
     } 
     if(condition 2) 
     { 
      $this->query->where($va2, 'test'); 
     } 

     $this->query->where('active', 1); 
    } 
} 
+0

예 이런 식으로 알고 있지만 범위와 정확히 비슷한 것을 찾고 있습니다. DB :: table ('myTable') -> myFun ($ var1, $ var2); ** NOT **'DB :: table ('myTable'); $ this-> myFun ($ var1, $ var2);'단 한 줄에 설득력있는 범위가 있습니다. 나는 그것이 가능한지 아닌지 모른다. –