So passen Sie Laravels Datenbank \ Query \ Builder an (bessere Unterabfrage erstellen)
Ich arbeite an Laravel 4. Wie ich wusste, kann ich folgende Unterabfragen durchführen:
Project::whereIn('project_id', function($q) {
$q->select('project_id')
->from('company')
->whereNull('deleted_at');
});
Ich habe Komplikationen festgestellt, dass ich den Gültigkeitsbereich in der Unterabfrage nicht verwenden und soft_delete deaktivieren kann, sodass ich den Quellcode so stark ändere.
Ich wünschte es wäre:
Project::whereIn('project_id', function(&$q) {
$q = Company::select('project_id')->getQuery();
});
Jetzt kann ich Scope hinzufügen, soft_delete einfach deaktivieren.
Ich versuchte und fand eine Lösung, dass ich Laravels Database \ Query \ Builder-Code ändern muss, Funktion whereInSub, Zeile 786.
call_user_func($callback, $query = $this->newQuery());
zu:
$query = $this->newQuery();
call_user_func_array($callback, array(&$query));
Es ist schädlich, den Anbieter des Laravel-Frameworks zu ändern. Also möchte ich fragen, wie es sicher geht.
Entschuldigung, weil mein Englisch schlecht ist.
Danke fürs Lesen.