Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Pobranie danych bez pętli foreach.
Generic
post 2.02.2019, 13:37:38
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

Ostrzeżenie: (10%)
X----


Pracuję nad koszykiem z zakupami, który oparty jest o jedno z repozytoriów gitchuba - a dokładniej: https://github.com/darryldecode/laravelshoppingcart

W dokumentacji autor podał przykład w którym wykorzystuje pętle do pobrania danych obiektu:
  1. // To get all applied conditions on a cart, use below:
  2. $cartConditions = Cart::getConditions();
  3.  
  4. foreach($cartConditions as $condition)
  5. {
  6. $condition->getName(); // the name of the condition
  7. }

Zależy mi, aby uzyskać wartość parametru getName() bez użycia pętli. Zbliżony efekt otrzymałem kiedy zwróciłem po prostu Cart::getConditions(), ale wraz z nazwą zwracane są klamry, a potrzebuje tylko samej nazwy.
  1. {"Poczta Express":{}}

Użyłem print_r, aby sprawdzić z czego składa się obiekt i uzyskałem następujące dane:
  1. Darryldecode\Cart\CartConditionCollection Object ( [items:protected] => Array ( [Poczta Express] => Darryldecode\Cart\CartCondition Object ( [args:Darryldecode\Cart\CartCondition:private] => Array ( [name] => Poczta Express [type] => shipping [target] => total [value] => 16 [order] => 1 ) [parsedRawValue:Darryldecode\Cart\CartCondition:private] => 16 ) ) ) 1

Czy mógłby mi ktoś podpowiedzieć jak dostać się do wartości name?
Go to the top of the page
+Quote Post
viking
post 2.02.2019, 14:10:13
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Jest to standardowa kolekcja eloquent. Możesz użyć np first ale rozumiesz że stracisz dane?


--------------------
Go to the top of the page
+Quote Post
Generic
post 2.02.2019, 15:45:49
Post #3





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

Ostrzeżenie: (10%)
X----


Nie szkodzi ponieważ służy to wyłącznie wyświetleniu nazwy w tytule.

Użyłem metody first, która zwróciła mi pierwszą kolekcje jednak nadal mam problem z pobraniem konkretnej wartości.
  1. print_r(Cart::getConditionsByType('shipping')->first())
  2.  
  3. // Rezultat
  4. Darryldecode\Cart\CartCondition Object ( [args:Darryldecode\Cart\CartCondition:private] => Array ( [name] => Poczta Express [type] => shipping [target] => total [value] => 16 [order] => 1 ) [parsedRawValue:Darryldecode\Cart\CartCondition:private] => 16 ) 1

Kiedy próbuję wyciągnąć konkretną wartość otrzymuję:
  1. Cart::getConditionsByType('shipping')->first()->get('name')
  2.  
  3. // Rezultat
  4. Call to undefined method Darryldecode\Cart\CartCondition::get()


Ten post edytował Generic 2.02.2019, 15:49:36
Go to the top of the page
+Quote Post
viking
post 2.02.2019, 16:32:36
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


https://laravel.com/docs/5.7/eloquent#retrieving-models


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 2.02.2019, 16:54:00
Post #5





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

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


Jak już to

Cart::getConditionsByType('shipping')->first()->getName();
Go to the top of the page
+Quote Post
Generic
post 2.02.2019, 17:04:35
Post #6





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

Ostrzeżenie: (10%)
X----


Dzięki @Pyton_000, teraz działa jak należy.
Go to the top of the page
+Quote Post
Pyton_000
post 2.02.2019, 17:10:29
Post #7





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

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


Na przyszłośc polecam zaglądać do deklaracji klas których ma się zamiar używać.
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: 28.03.2024 - 16:08