Laravel kolekcje

Laravel kolekcje
JD
  • Rejestracja:około 19 lat
  • Ostatnio:5 dni
0

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

Kopiuj
$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ę

Kopiuj
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ę?

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
JD
  • Rejestracja:około 19 lat
  • Ostatnio:5 dni
0

dla zobrazowania.
mam dwie encje

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

pobieram

Kopiuj
$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 :)

mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
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.


It's All About the Game.
JD
  • Rejestracja:około 19 lat
  • Ostatnio:5 dni
0

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

JD
  • Rejestracja:około 19 lat
  • Ostatnio:5 dni
0

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

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.