2016-07-28 25 views
0

ich oft müssen diese Abfrage ausführen:benutzerdefinierte Abfrage-Funktion Laravel

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

Also anstatt das Schreiben jedes Mal, wenn ich wie eine Funktion wollen aus:

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

dass ich in meinem Controller anrufen . Wo soll ich meine Funktion definieren, im Moment brauche ich sie nur in einem Controller, aber vielleicht brauche ich einen anderen, wenn das möglich ist. Jede Hilfe wird geschätzt.

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

Und es wie dies in Ihrem Controller verwenden:

Antwort

2

Sie diese Methode auf das Modell setzen könnte, wenn man wollte als statische Funktion.

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

// controller 

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

oder eine Abfragebereich

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

// controller 

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

Kinda zum Modell hinzufügen, hängt, wie Sie es verwenden möchten.

+1

Scopes sind definitiv der Weg zu gehen. Lassen Sie uns Ihre Anfrage bei Bedarf fortsetzen. –

3

Sie können Ihre Funktion in JobCardOpt Modell als statisch definieren

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