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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage