In genere si sarebbe raggiungere questo impostando la dichiarazione DOP fetch_style di PDO :: FETCH_CLASS come di seguito
$statement->fetchAll(PDO::FETCH_CLASS, "App\User");
Se si guarda il metodo Illuminate\Database\Connection::select
vedrai che mentre è possibile impostare fetch_style/fetchMode, non è possibile il secondo argomento.
public function select($query, $bindings = array(), $useReadPdo = true)
{
return $this->run($query, $bindings, function($me, $query, $bindings) use ($useReadPdo)
{
if ($me->pretending()) return array();
// For select statements, we'll simply execute the query and return an array
// of the database result set. Each element in the array will be a single
// row from the database table, and will either be an array or objects.
$statement = $this->getPdoForSelect($useReadPdo)->prepare($query);
$statement->execute($me->prepareBindings($bindings));
return $statement->fetchAll($me->getFetchMode());
});
}
Né si può ottenere l'accesso alla dichiarazione prima fetchAll è chiamato a chiamare PDOStatement::setFetchMode
per esempio.
Si potrebbe tentare di estendere Illuminate\Database\Connection
e utilizzarlo in tutte le altre classi correlate a Database estendendo e sostituendo, se necessario, ma sembra un'attività pesante da mantenere.
L'altra opzione è quella di utilizzare Eloquent che restituirà le classi di un tipo particolare, ma si ottiene il leggero sovraccarico aggiuntivo di idratazione degli oggetti del modello.
class Foo extends Illuminate\Database\Eloquent\Model {
protected $table = 'foo';
}
Foo::all()
Foo::where('col', 1)->get()
fonte
2015-08-07 09:51:02
Ma cosa succede se si utilizza l'impaginazione Eg $ coll = DB :: tavolo ('foo') -> orderBy ('title') -> paginate (30);. Poi idratazione fallisce ... Tutte le idee (Sry? - sono nuovo di laravel) – derRobert
@derRobert Nessun problema: a volte in Laravel fare qualcosa che sembra normale o logico può essere molto faticoso Chiamare 'pagination' restituisce un oggetto' AbstractPaginator' che CONTIENE i risultati, quindi devono essere convertiti all'interno l'impaginatore: il mio Edit 2 da sopra link a una funzione che ho scritto che fa esattamente questo. Prendi il '$ coll 'tha t hai sopra, e lo lanci usando la mia funzione: 'Foo :: castResults ($ coll)' – dKen