pracuję nad laravel 4. jak wiedziałem, co mogę zrobić podzapytania:Jak dostosować Database laravel za Zapytanie Builder (lepiej podzapytanie)
Project::whereIn('project_id', function($q) {
$q->select('project_id')
->from('company')
->whereNull('deleted_at');
});
znalazłem komplikacji, że mogę” • użyj zakresu w podkwerendach i wyłącz opcję soft_delete, aby zmienić kod źródłowy tak bardzo.
Życzę było:
Project::whereIn('project_id', function(&$q) {
$q = Company::select('project_id')->getQuery();
});
Teraz mogę dodać zakres, łatwo wyłączyć soft_delete.
Próbowałem i znaleźć rozwiązanie, że muszę zmienić laravel za Database \ Zapytanie \ kod Builder, function whereInSub, linia 786.
call_user_func($callback, $query = $this->newQuery());
do:
$query = $this->newQuery();
call_user_func_array($callback, array(&$query));
To szkodliwe zmodyfikować Dostawca Laravel framework's. Chciałbym zapytać, jak to zrobić bezpiecznie.
Przepraszam, ponieważ mój zły angielski.
Dziękuję za przeczytanie.
Zmieniliśmy moje pytanie, ponieważ znalazłem rozwiązanie. Konieczność zastąpienia funkcji chronionej newBaseQueryBuilder() w nowej klasie MyModel –
Nie ma potrzeby dodawania list "użytkowania", chyba że faktycznie ... używasz ich w swojej podklasie. W tym przypadku potrzebujesz tylko MyQueryBuilder, który byłby użyty w nadpisanej wersji newBaseQueryBuilder() jak dokładnie wskazano @ LêTrầnTiếnTrung. – LePhleg