Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [laravel] problem z kolekcją
Forum PHP.pl > Forum > PHP > Frameworki
road2me
Mam problem z metodą where() dla kolekcji:
  1. foreach ($offers as $offer) {
  2. $col = $offerstats->where('id',$offer->id);
  3. if (!$col->isEmpty()) {
  4. Log::error($col);
  5. (.....)


Pierwszy wynik zwraca mi zawsze z "1" cokolwiek to znaczy:
  1. [2017-01-19 01:44:25] local.ERROR: {"1":{"id":"3275042","do":"3","cena":"4.35","szt":"1"}}
  2. [2017-01-19 01:44:25] local.ERROR: [{"id":"3082727","do":"3","cena":"5.55","szt":"1"}]


Dlaczego tak się dzieje? Wersja 5.0.27
Pyton_000
Coś mi się zdaje że tutaj powinna być zdefiniowana relacja 1:n (Offer - Offerstat)
road2me
Można jaśniej?
Pyton_000
W modelu Offer relacja hasMany()
https://laravel.com/docs/5.0/eloquent#one-to-many

Wtedy offers możesz pobrać tak:
Kod
$offer->offers()->...
road2me
To może w ogóle mam zły algorytm.
Mam kolekcję $offer (30 elementów) oraz kolekcję $offerstats (2 elementy)
i teraz chcę zrobić iterację po elementach z $offer i jeśli znajdzie dane ID w $offerstats to ma pobrać dla kilka danych z offerstats dla tego ID.
r4xz
To będzie tak jak @Python_000 pisze lub jeśli któraś z tych kolekcji jest stała to użyj whereIn oraz pluck:
  1. $offers->whereIn('id', $offerstats->pluck('id'))


lub w drugą stronę:
  1. $offerstats->whereIn('id', $offers->pluck('id'))
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.