Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [laravel] problem z kolekcją
road2me
post 19.01.2017, 02:08:52
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.01.2017

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Pyton_000
post 19.01.2017, 08:02:27
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Coś mi się zdaje że tutaj powinna być zdefiniowana relacja 1:n (Offer - Offerstat)
Go to the top of the page
+Quote Post
road2me
post 19.01.2017, 09:46:12
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.01.2017

Ostrzeżenie: (0%)
-----


Można jaśniej?
Go to the top of the page
+Quote Post
Pyton_000
post 19.01.2017, 09:57:55
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


W modelu Offer relacja hasMany()
https://laravel.com/docs/5.0/eloquent#one-to-many

Wtedy offers możesz pobrać tak:
Kod
$offer->offers()->...
Go to the top of the page
+Quote Post
road2me
post 19.01.2017, 17:39:10
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.01.2017

Ostrzeżenie: (0%)
-----


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.

Ten post edytował road2me 19.01.2017, 17:48:47
Go to the top of the page
+Quote Post
r4xz
post 21.01.2017, 10:53:30
Post #6





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


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'))


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:45