Lets sagen, dass ich ein „Student“ -Modell mit Funktionen haben getActive()
und getInactive()
wie folgt aus:Klassenvariable in Laravel Modell
public static function getActive()
{
return Student::with(['user', 'country', 'course', 'gender', 'language' => function($q){$q->orderBy('name');}])->where('active', 1)->get();
}
public static function getInactive()
{
return Student::with(['user', 'country', 'course', 'gender', 'language' => function($q){$q->orderBy('name');}])->where('active', 0)->get();
}
Wie Sie sehen können, ist der einzige Unterschied ist die >where('active', 0)
am Ende jeder Abfrage.
Ich versuche, eine globale "Basisabfrage" zu deklarieren, an die ich am Ende die where
Bedingung anhängen würde. Etwas wie folgt aus:
$baseQuery;
public function __construct()
{
$baseQuery = Student::with(['user', 'country', 'course', 'gender', 'language' => function($q){$q->orderBy('name');}]);
}
public static function getActive()
{
return $baseQuery->where('active', 1)->get();
}
public static function getInactive()
{
return $baseQuery->where('active', 0)->get();
}
Das würde mich nicht retten nur redundanten Code, es würde auch meinen Code klarer und sichtbar, aber als Neuling machen ich mit dem Code zu kämpfen.
Irgendwelche Ideen?
EDIT 1:
ich es so aus meinem Controller bin Aufruf:
$students = Profile::getActive();
Wie rufen Sie es in Ihrem Code? – James
Ich habe meinen Beitrag mit der Antwort auf Ihre Frage bearbeitet –