Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Laravel sumowanie kolekcji
Forum PHP.pl > Forum > PHP
john_doe
Jak w Laravel zsumować dwie kolekcje te same kolekcje obiektów. Np. mam kolekcję parametrów

  1. [
  2. 0=>Parameter{
  3. 'day' => 0
  4. 'rank' => 1
  5. },
  6. 1=>Parameter{
  7. 'day' => 1
  8. 'rank' => 2
  9. },
  10. 2=>Parameter{
  11. 'day' => 2
  12. 'rank' => 3
  13. }
  14. ]
  15. // druga
  16. [
  17. 0=>Parameter{
  18. 'day' => 1
  19. 'rank' => 3
  20. }
  21. ]
  22.  
  23. // wynik
  24.  
  25. {
  26. 'day' => 0
  27. 'rank' => 1
  28. },
  29. {
  30. 'day' => 1
  31. 'rank' => 5
  32. },
  33. {
  34. 'day' => 2
  35. 'rank' => 3
  36. }
  37. ]
  38.  
  39.  


suma ale nie day.


Pyton_000
Może coś takiego:


  1. $collection1->merge($collection2)->groupBy('day')->sum('rank)
john_doe
dzięki Pyton_000 ale nie działa. Zwraca 0.
Pyton_000
skąd masz te kolekcje?
john_doe
robię coś takiego
  1. $configuration = $this->configurationRepository
  2. ->getBy('race_id', $detail->race->id)
  3. ->sortByDesc('date_from')
  4. ->first();


dostaję kolekcję obiektów Parameter
  1. class Parameter extends Model
  2. {
  3. protected $fillable = [
  4. 'configuration_id', 'day', 'water', 'feed', 'weight', 'downs', 'temperature',
  5. ];
  6.  
  7. }
  8.  

Parametry pod względem pola "day" zawsze lecą od 0
i teraz:
- z zewnątrz dostaję int`a = 7.
- pobieram sobie wszystkie parametery. ( kolekcja 1 )
- pobieram sobie parametry począwszy od dnia 7 ( kolekcja 2 )

Teraz te dwie kolekcje potrzebuję scalić tak aby w 1szym Parameter dla day = 0 zabrać feed z tej drugiej kolekcji ( więc to nawet źle określiłem inicjalnie ) po prostu zastąpienie. Day pozostaje bez zmian = 0, feed zastąpione ( water, weight też )
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.