ส่วนขยายสำหรับคลาส Collection ของ Laravel groupByMultiple โดยเฉพาะอย่างยิ่งสำหรับการจัดกลุ่มคอลเลกชันในหลายฟิลด์แทนที่จะเป็นเพียงฟิลด์เดียว
ตัวอย่าง:
ก | บี | ค | ดี |
---|---|---|---|
ฟู | บาร์ | บาซ | ดังสนั่น |
ฟู | การ์ปลี่ | คอร์จ | พลัก |
ฟู | บาร์ | คอร์จ | ดังสนั่น |
ฟู | บาร์ | คอร์จ | วัลโด |
คุกซ์ | การ์ปลี่ | ซิซซี่ | เฟร็ด |
คุกซ์ | grault | การ์ปลี่ | คุซ |
โดยการเรียก myCollection->groupBy(['A', 'B', 'C', 'D']) ผลลัพธ์จะกลายเป็น:
ความเข้ากันได้ข้าม ฟังก์ชัน groupByMultiple ค่อนข้างเข้ากันได้กับ groupBy ดั้งเดิมของ Laravel โดยที่มันจะทำงานในลักษณะเดียวกันหากคุณส่งผ่านอาร์กิวเมนต์แรกบางอย่างที่ไม่ใช่อาร์เรย์ ดังนั้นเช่นเดียวกับ groupBy คุณสามารถเรียกมันด้วยสตริงหรือการปิดได้ ฟังก์ชันจะใส่อาร์กิวเมนต์แรกในอาร์เรย์หากไม่ใช่อาร์กิวเมนต์เดียว หากคุณพยายามส่งผ่านค่าที่เรียกได้เป็นอาร์เรย์ ดังนั้น ["Foo", "Bar"] โดยที่ Foo::Bar() เป็นวิธีที่ถูกต้อง แน่นอนว่าฟังก์ชัน groupByMultiple จะพยายามจัดกลุ่มตามคีย์ "Foo" ครั้งแรกและครั้งที่สอง "บาร์"; นี่คือความไม่เข้ากันหลักกับ groupBy() แน่นอนคุณสามารถส่งอาร์เรย์ที่มี callable อยู่ในนั้นได้ ดังนั้น [["Foo", "Bar"]] หรือ [["Foo", "Bar"], "Baz"] จะทำงานได้ดี สำหรับผู้ที่ใช้ groupBy อยู่แล้ว ฟังก์ชันนี้จะเปลี่ยนไปใช้ได้ง่ายมาก