J'ai un modèle appelé Order
comme ceci:Laravel: Regroupement des lignes
class Order extends Model
{
public function offer()
{
return $this->belongsTo(Offer::class);
}
}
lignes Exemple peut ressembler à ceci
id quantity offer_id
15 5 20
20 1 21
25 3 20
30 2 27
35 1 20
40 1 21
Je veux regrouper toutes les commandes par offer_id
en utilisant Laravel Eloquent pour donner la sortie suivante:
[
[20] => [
// order 15,
// order 25,
// order 35,
],
[21] => [
// order 20,
// order 40,
]
[27] => [
// order 30,
]
]
Comment puis-je le faire efficacement? Je l'ai essayé ce qui suit:
Order::groupBy('offer_id)->get();
Mais ce cache tout ordre avec le même offer_id
.
Notez que je vais idéalement faire tout cela dans Laravel Elqouent, donc pas de faire du post-traitement.
Que diriez-vous 'votre commande :: get() -> groupBy ('OFFER_ID')', ce édite la collection après qu'il a été tiré par les cheveux, mais fait ce que vous voulez (comme [ici documenté ] (https://laravel.com/docs/5.4/collections#available-methods) – milo526