assumendo che ho il tavololaravel - eloquenti - ottenere somma di modello relativo colonna specifica
ordini
con campi
id, userId, quantità, descrizione
e la tabella
utente
con vari campi
come se la bacchetta di ottenere tutti gli utenti (con tutti i suoi campi) e la somma della colonna "quantità" degli ordini relativi a tale utente?
assumendo che ho:
utente: {id: 15, Nome: jim, Cognome: Morrison, genere: maschile}
e
ordine: { id: 1, userId: 15, importo: 10, descrizione: "order xxx"},
ordine: {id: 3, userId: 15, quantità: 40, descrizione: "ordina aa"}
Vorrei ricevere:
utente: {id: 15, Nome: jim, Cognome: Morrison, genere: maschile, orderAmount: 50}
Naturalmente vorrebbe evitare la dichiarazione di foreach.
Fondai questo sul mio modello di utente
public function userOrder(){
return $this->hasMany('Order', 'userId');
}
E ho provato questo:
return $this->hasMany('Order', 'userId')->sum('amount');
senza alcuna fortuna ...
grazie per la risposta. Sono stato molto vago nel definire i miei tavoli ... ovviamente si chiama "utenti" e il mio modello si chiama "Utente", ma temo che la tua non sia la soluzione che sto cercando ... Dai un'occhiata a [ this]: http: //stackoverflow.com/questions/25655388/get-max-value-for-each-related-model-with-eloquent-in-laravel e scopri come Jarek Tkaczyk ha risolto il mio problema con "latest()" funzione ... cerco qualcosa del genere – ciccioassenza
ah oh ... non la vedo nella tua domanda ma hey, sono felice che tu abbia trovato la tua soluzione :-) – Kristo
Perdonami, il mio inglese è brutto e ho problemi a spiegare il problema ... il link che ho postato è legato ad un'altra domanda in cui quello che volevo sottolineare è come con quella soluzione sono riuscito a prendere solo l'ultimo messaggio tra quelli correlati, senza usare un foreach. Il problema persiste :( – ciccioassenza