2015-08-01 10 views
5

Vorrei sapere se è possibile restituire una chiamata di procedura memorizzata MySQL come oggetto eloquente.Laravel-5 restituisce un oggetto eloquente quando esegue la stored procedure MySQL

La chiamata di seguito funziona correttamente, ma $result restituisce sempre un array anziché il solito oggetto Eloquent.

$result = DB::select('call bookings_by_voucher()');

Qualcuno sa come restituire questo come un oggetto, in modo che posso usare ->count(), ->get() ecc

+0

mi chiedo proprio questo. Purtroppo ho ereditato un gigantesco database di dung che non posso ripetere a causa di vincoli di tempo/denaro. Essere in grado di fare quanto sopra semplificherebbe MOLTO per me –

risposta

1

È necessario passare la matrice in una nuova istanza del vostro oggetto eloquenti.

$booking = new Booking($result); 
0

è possibile utilizzare eloquenti MODELLO. Restituisce un oggetto.

ex.

$user = app\ModelName::all()->count(); 

get(), count() e altri Funzione di aggregazione opere con modelle

1

Un ritardo di domanda, ma se qualcun altro ha bisogno di questo:

Booking::fromQuery('call bookings_by_voucher()'); 

L'unico problema non è possibile eseguire ulteriori operazioni sql come dove, limite, ecc., poiché non è possibile manipolare direttamente una stored procedure, ad esempio: non è possibile effettuare "call bookings_by_voucher() dove active = 1 limit 200". Puoi comunque utilizzare le operazioni di raccolta di laravel.

https://laravel.com/docs/5.4/eloquent-collections

Problemi correlati