Sto lavorando su laravel 4. come sapevo, posso fare subquery:Come personalizzare Database di laravel Query Builder (fare un migliore subquery)
Project::whereIn('project_id', function($q) {
$q->select('project_id')
->from('company')
->whereNull('deleted_at');
});
ho trovato complicazioni, che posso' t usare scope in subquery e disabilitare soft_delete mi fa cambiare codice sorgente così tanto.
vorrei che fosse:
Project::whereIn('project_id', function(&$q) {
$q = Company::select('project_id')->getQuery();
});
Ora, posso aggiungere portata, disabilitare soft_delete facilmente.
ho provato, e hanno trovato una soluzione, che devo cambiare il codice di laravel Database \ Query \ Builder, la funzione whereInSub, linea 786.
call_user_func($callback, $query = $this->newQuery());
a:
$query = $this->newQuery();
call_user_func_array($callback, array(&$query));
E 'dannoso per modificare Il fornitore del framework Laravel. Quindi voglio chiedere come farlo in modo sicuro.
Scusa perché il mio pessimo inglese.
Grazie per la lettura.
Ho risolto la mia domanda perché ho trovato una soluzione. È necessario eseguire l'override della funzione protetta newBaseQueryBuilder() nella nuova classe MyModel –
Non è necessario includere elenchi di "utilizzo" a meno che non si stia effettivamente ... utilizzandoli nella sottoclasse. In questo caso hai solo bisogno del tuo MyQueryBuilder, che verrebbe utilizzato nella versione sovrascritta di newBaseQueryBuilder() come @ LêTrầnTiếnTrung ha puntualizzato con precisione. – LePhleg