Laravel kolekcje

0

nie doczytałem w dokumentacji, że pluck() dla zduplikowanych kluczy wrzuca ostatni pasujący element.

$collection = collect([
    ['brand' => 'Tesla',  'color' => 'red'],
    ['brand' => 'Pagani', 'color' => 'white'],
    ['brand' => 'Tesla',  'color' => 'black'],
    ['brand' => 'Pagani', 'color' => 'orange'],
]);

$plucked = $collection->pluck('color', 'brand');

$plucked->all();

// ['Tesla' => 'black', 'Pagani' => 'orange']

potrzebuję stworzyć kolekcję

Collection {#469 ▼
  #items: array:1 [▼
    "2019-02-28" => "1.000",
    "2019-02-28" => "2.000",
    "2019-03-01" => "12.000",
  ]
}

czy jest coś a`la pluck() biorącą wszystko?
Czy też muszę iterować po eloquent kolekcji i sobie manualnie stworzyć taką tablicę?

0

dla zobrazowania.
mam dwie encje

  1. dokument [id, data, cos, cos ]
  2. powiazane_dokumenty [ id, document_id, ilosc, data]

pobieram

$document = dao->get($id);
$dostawy = $document->powiazane_dokumenty->pluck('ilosc', 'data');

chciałbym aby $dostawy od razu były już taką kolekcją
Collection {#469 ▼
#items: array:1 [▼
"2019-02-28" => "1.000",
"2019-02-28" => "14.000",
"2019-03-01" => "11.000",
]
}

groupBy musiałbym troche obrobić jeszcze :)

0

w twoim przypadku data jest kluczem, a klucz musi być unikalny, więc nie twój format nigdy i nigdzie nie ma racji istnienia.

0

fakt, zapędziłem się.
Muszę zsumować ilości dla danej daty

0

dla tych co będą szukać podobnego tematu...

$dostawy = $dokument->powiazane_dokumenty->->groupBy('date')->map(function ($row){
            return $row->sum('quantity');
        });

1 użytkowników online, w tym zalogowanych: 0, gości: 1