I have this collections of cart ecommerce items, I want detect that items have the same article_id value:
Collection {#306 ▼
#items: array:3 [▼
0 => CartLine {#294 ▼
+cart_line_id: 836473
+cart_id: 12957798
+parent_line_id: null
+quantity: 2
+article_id: 1728
+article_name: "TAZA CERAMICA"
+data: ""
+extradata: "{"original_dsn":"qF3Xxttr3B2w","tmp_dsn":"tmp_4k0k9q6usqd7pnu7d70rg0ta674zv8v4"}"
+article_family_id: "AAAPTP"
+article_on_line_v: 1
+promotion_code: null
+promotion_id: null
+url_preview: "http://rp-static.pre/www_api/session_uploads/51_ddbc9b7fc849d214fb462f8af007c97c_6/836473/captura.jpg"
+available_modify: true
+model: ArticleModel {#295 ▶}
+cession: 5.34
+cession_original: 5.34
+pvp: 9.95
+pvp_original: 9.95
+pvp_discount: 0.0
+cession_discount: 0.0
+discount_regularization: null
+total_cession: 10.69
+total_cession_original: 10.68
+total_pvp: 19.9
+total_pvp_original: 19.9
#_READ_ONLY: []
#_HIDDEN_FIELDS: []
+__WARNINGS: []
}
1 => CartLine {#296 ▼
+cart_line_id: 836474
+cart_id: 12957798
+parent_line_id: null
+quantity: 1
+article_id: 1728
+article_name: "TAZA CERAMICA"
+data: ""
+extradata: "{"original_dsn":"59avc306wjem","tmp_dsn":"tmp_vnr16irux3ebi6pwy0dmn7ypeqwnr376"}"
+article_family_id: "AAAPTP"
+article_on_line_v: 1
+promotion_code: null
+promotion_id: null
+url_preview: "http://rp-static.pre/www_api/session_uploads/51_ddbc9b7fc849d214fb462f8af007c97c_6/836474/captura.jpg"
+available_modify: true
+model: ArticleModel {#297 ▶}
+cession: 5.34
+cession_original: 5.34
+pvp: 9.95
+pvp_original: 9.95
+pvp_discount: 0.0
+cession_discount: 0.0
+discount_regularization: null
+total_cession: 5.34
+total_cession_original: 5.34
+total_pvp: 9.95
+total_pvp_original: 9.95
#_READ_ONLY: []
#_HIDDEN_FIELDS: []
+__WARNINGS: []
}
2 => CartLine {#298 ▼
+cart_line_id: 836475
+cart_id: 12957798
+parent_line_id: null
+quantity: 1
+article_id: 1378
+article_name: "JARRA CERVEZA ALEMANA"
+data: ""
+extradata: "{"original_dsn":"null","tmp_dsn":"tmp_8cu2ls6q18ip6vvd7qccrsbjiebgsrzj"}"
+article_family_id: "AAAPTP"
+article_on_line_v: 1
+promotion_code: null
+promotion_id: null
+url_preview: "http://rp-static.pre/www_api/session_uploads/51_ddbc9b7fc849d214fb462f8af007c97c_6/836475/captura.jpg"
+available_modify: true
+model: ArticleModel {#299 ▶}
+cession: 10.21
+cession_original: 10.21
+pvp: 19.0
+pvp_original: 19.0
+pvp_discount: 0.0
+cession_discount: 0.0
+discount_regularization: null
+total_cession: 10.21
+total_cession_original: 10.21
+total_pvp: 19.0
+total_pvp_original: 19.0
#_READ_ONLY: []
#_HIDDEN_FIELDS: []
+__WARNINGS: []
}
]
}
In this case, there are two items with same article_id value, 1728. I want get only the two items with this article_id.
After, I want add the articles_id 1728 quantities values, in only article 1728 item. In this case, I want get an unique article_id 1728 with quantity:2.
The final result that I want is this:
Collection {#310 ▼
#items: array:2 [▼
0 => CartLine {#294 ▼
+cart_line_id: 836473
+cart_id: 12957798
+parent_line_id: null
+quantity: 3
+article_id: 1728
+article_name: "TAZA CERAMICA"
+data: ""
+extradata: "{"original_dsn":"qF3Xxttr3B2w","tmp_dsn":"tmp_4k0k9q6usqd7pnu7d70rg0ta674zv8v4"}"
+article_family_id: "AAAPTP"
+article_on_line_v: 1
+promotion_code: null
+promotion_id: null
+url_preview: "http://rp-static.pre/www_api/session_uploads/51_ddbc9b7fc849d214fb462f8af007c97c_6/836473/captura.jpg"
+available_modify: true
+model: ArticleModel {#295 ▶}
+cession: 5.34
+cession_original: 5.34
+pvp: 9.95
+pvp_original: 9.95
+pvp_discount: 0.0
+cession_discount: 0.0
+discount_regularization: null
+total_cession: 10.69
+total_cession_original: 10.68
+total_pvp: 19.9
+total_pvp_original: 19.9
#_READ_ONLY: []
#_HIDDEN_FIELDS: []
+__WARNINGS: []
}
2 => CartLine {#298 ▼
+cart_line_id: 836475
+cart_id: 12957798
+parent_line_id: null
+quantity: 1
+article_id: 1378
+article_name: "JARRA CERVEZA ALEMANA"
+data: ""
+extradata: "{"original_dsn":"null","tmp_dsn":"tmp_8cu2ls6q18ip6vvd7qccrsbjiebgsrzj"}"
+article_family_id: "AAAPTP"
+article_on_line_v: 1
+promotion_code: null
+promotion_id: null
+url_preview: "http://rp-static.pre/www_api/session_uploads/51_ddbc9b7fc849d214fb462f8af007c97c_6/836475/captura.jpg"
+available_modify: true
+model: ArticleModel {#299 ▶}
+cession: 10.21
+cession_original: 10.21
+pvp: 19.0
+pvp_original: 19.0
+pvp_discount: 0.0
+cession_discount: 0.0
+discount_regularization: null
+total_cession: 10.21
+total_cession_original: 10.21
+total_pvp: 19.0
+total_pvp_original: 19.0
#_READ_ONLY: []
#_HIDDEN_FIELDS: []
+__WARNINGS: []
}
]
}
use groupBy and then map to return the calculated quantity for ex.
$collection = collect(); //your above collection
$finalCollection = $collection->groupBy('article_id')->map(function($items){
$singleItem = $items->first();
$singleItem->quantity = $items->count();
return $singleItem;
});
// now in $finalCollection each item will be unique with article_id and it will have property named quantity which will have value equal to it's quantity.