2016-11-30 4 views
0

ich diese Sammlungen von Wagen E-Commerce-Produkte haben, möchte ich feststellen, dass Produkte die gleiche article_id Wert haben:Detect doppelte Variable mit Laravel Sammlungen

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 diesem Fall gibt es zwei Elemente mit gleichen article_id Wert , 1728. Ich möchte nur die zwei Artikel mit dieser article_id erhalten.

Nach, ich möchte die Articles_id 1728 Mengen Werte hinzufügen, in nur Artikel 1728 Artikel. In diesem Fall möchte ich eine eindeutige article_id 1728 mit der Menge 2 erhalten.

Das Endergebnis, dass ich will, ist dies:

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

ausprobiert ['-> unique()'] (https://laravel.com/docs/5.3/collections#method-unique) Funktion? –

+0

Ok, jetzt möchte ich die articles_id 1728 Mengen hinzufügen, nur in Artikel 1728 Artikel. In diesem Fall möchte ich eine eindeutige article_id 1728 mit der Menge: 3 erhalten. –

+0

ah Ich sehe Sie wollen sie in einer Zeile gruppieren und ihre Menge summieren? korrigiere mich, wenn ich falsch liege – Beginner

Antwort

0

Verwendung groupBy und dann ordnen Sie die berechnete Menge für die Ex zurückzukehren.

$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

Mmm diesen Code geben Sie mir den Artikel 1728 einzigartig, aber nicht die Mengen aller Artikel 1728, möchte ich nur Artikel 1728 mit der Menge 3 –

+0

stellen Sie sicher, dass die CartLine Eigenschaft 'Menge' zugewiesen werden kann, können Sie dd ($ Artikel-> Anzahl()); Beim Schließen und Überprüfen sollten Sie die Gesamtmenge erhalten, aber wenn die Mengeneigenschaft der CartLine-Klasseninstanz nicht zugewiesen werden kann, funktioniert sie nicht –