Est-il possible de faire avec Eloquent

Par tbm, il y a 9 ans


Bonsoir,

Je réalise une page ou sont affiché les détails de facturation par étudiant

Voici mes tables

orders (date, price_id, student_id) student (id, first_name, last_name, grade, ....) prices (id, label, price) Orders date | price_id | student_id | ************************************* 13-09-2016 | 1 | 2 14-09-2016 | 1 | 2

et j'aimerai savoir si il est possible de faire ceci de manière simple avec Laravel afin de
pouvoir mieux utiliser les données dans la vue.

[ // Etudiant John Doe 0 => StdClass Object { [first_name] => John, [last_name] => Doe, [details] => [ 0 => StdClass Object { [count] => 17, [price] => 3.75, [amount] => 63.75, [label] => "Tarif Standard", } 1 => StdClass Object { [count] => 14, [price] => 0.20, [amount] => 2.80, [label] => "Absence justifiée" } ] [global_amount] => 63.95 1 => StdClass Object {...} // Etudiant Régis Lafontaine ]

4 réponses

mxmaxime, il y a 9 ans

Salut,
mettre en place des relations? C'est possible oui ^^ documentation parti relationships

tbm, il y a 9 ans

C'est une relation mais un peu plus poussé on va dire. Les relations ne permettent de récupérer qu'une collection de lignes d'une autre table. Ici c'est une relation qui va compter le nombre de commandes et le prix qui va avec ainsi que le total global de l'étudiant.

Les relations ne me permettent pas de faire ce que je veux faire en fait. A moins que vous ayez un exemple auquel je n'y avais pas pensé.

tbm, il y a 9 ans

EDIT : Cela fonctionne, il reste cependant d'autres choses qui ne fonctionnent pas mais je pense que je trouverai une solution


Merci de vos réponses,

En réalité, tu as raison Emix, je peux bien faire ce que je veux avec des relations mais Laravel semble ne pas réussir a savoir ce que je veux.
Voici ce que j'ai fait:

// Student.php public function details(){ return $this->hasMany('App\Order') ->selectRaw('prices.label, prices.price, count(*) as count') ->join('prices', 'orders.price_id', '=', 'prices.id') ->groupBy('prices.id') ; } // UserController.php $results = Student::with('details')->where(['user_id' => Auth::user()->id])->get()->toArray(); var_dump($results);

J'ai bien la bonne structure, mais il me manque les données dans "details"
Le toArray est normal pour le moment
Pourtant, la requête generée et executée sur phpMyAdmin fonctionne

[ // Etudiant John Doe 0 => StdClass Object { [first_name] => John, [last_name] => Doe, [details] => [ ] // Tableau vide dans details 1 => StdClass Object {...} // Etudiant Régis Lafontaine ]