2016-11-30 31 views
0

我的購物車電子商務項目這個集合,我要檢測的項目有相同的的article_id值:檢測重複變量,Laravel集合

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: [] 
    } 
    ] 
} 

在這種情況下,有兩個項目具有相同的article_id值,1728.我想只有這個article_id的兩個項目。

之後,我想添加articles_id 1728數量值,僅在文章1728項。在這種情況下,我想獲得數量爲2的獨特article_id 1728。

最後的結果,我想是這樣的:

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: [] 
    } 
    ] 
} 
+0

嘗試[' - > unique()'](https://laravel.com/docs/5.3/collections#method-unique)函數? –

+0

好吧,現在,我想添加articles_id 1728數量,僅在文章1728項。在這種情況下,我想獲得數量爲3的獨特article_id 1728。 –

+0

啊我看到你想把他們分成一行並且總計他們的數量?糾正我,如果我錯了 – Beginner

回答

0

使用GROUPBY然後映射到返回的計算量爲前。

$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. 
+0

嗯,這段代碼還給我的文章1728獨一無二,但是並沒有總結所有文章的數量1728,我只想要文章1728的數量爲3 –

+0

請確保CartLine可以被賦予屬性「數量」,您可以檢查dd($ items->計數());在關閉並檢查你應該得到總量,但如果數量屬性不能分配給CartLine類實例,它將無法工作 –