2016-07-28 3 views
0
나는 종종이 쿼리를 수행 할 필요가

: 내 컨트롤러에서 호출 할 수 있습니다사용자 정의 쿼리 기능 laravel

public function getOp($JobCardNum, $OpNum) 
{ 
    $Op = JobCardOp::where([ 
     ['JobCardNum', '=', $JobCardNum ], 
     ['OpNum', '=', $OpNum ] 
     ])->first(); 
    return $Op; 
} 

: 나는 같은 기능을 할 때마다이를 작성하는 것보다 그래서 오히려

$Op = JobCardOp::where([ 
     ['JobCardNum', '=', $JobCardNum ], 
     ['OpNum', '=', $OpNum ] 
     ])->first(); 

을 . 내가 현재 내 기능을 정의해야하는 곳은 한 컨트롤러에서만 필요하지만 가능한 경우 다른 컨트롤러에서 필요할 수 있습니다. 어떤 도움을 주셔서 감사합니다. 당신이 원한다면

$jobCardOpt = JobCardOpt::getOp(1, 2); 

답변

2

당신은 당신의 모델에이 방법을 넣어 수 :

public static function getOp($JobCardNum, $OpNum) 
{ 
    $Op = static::where([ 
     ['JobCardNum', '=', $JobCardNum], 
     ['OpNum', '=', $OpNum] 
    ])->first(); 
    return $Op; 
} 

을 그리고 당신의 컨트롤러에서 다음과 같이 사용 :

+1

분명히 스코프 가야합니다. 필요한 경우 검색어를 계속합시다. –

3

당신은 정적으로 JobCardOpt 모델에서 함수를 정의 할 수 있습니다 정적 함수로.

public static function getOp($cardNum, $opNum) 
{ 
    return static::where([ 
     ['JobCardNum', '=', $cardNum], 
     ['OpNum', '=', $opNum] 
    ])->first(); 
} 

// controller 

$res = YourModel::getOp($cardNum, $opNum); 

또는 모델

public function scopeGetOp($query, $cardNum, $opNum) 
{ 
    return $query->where([ 
     ['JobCardNum', '=', $cardNum], 
     ['OpNum', '=', $opNum] 
    ]); 
} 

// controller 

$res = YourModel::with(...)->getOp($cardNum, $opNum)->first(); 

에 쿼리 범위를 추가 좀 당신이 그것을 사용하는 방법을 따라 달라집니다.