W kategorii view.phtml, jeśli otrzymam kategorię, a następnie kolekcję produktów, jak mogę uzyskać pierwszy produkt z kolekcji przypisanej do $ _product do użycia w kodzie? Oto co mam:
$_category = $this->getCurrentCategory();
$_collection = $_category->getProductCollection();
$_product =
$_resource = $_product->getResource();
Próbowałem używać foreach, ale ciągle pojawiały się błędy.
$_product = $_collection->getFirstItem()
Odpowiedzi:
Aby uzyskać pierwszy element w kolekcji, wystarczy użyć
getFirstItem()
funkcji w kolekcji.Przykład:
Przykład 2 (dla tego konkretnego pytania):
Niektóre inne obszary mogą być wykorzystane:
Klienci
Święcenia
Proszę zanotować:
Załadowanie WSZYSTKICH produktów / klientów / zamówień nie jest dobrym pomysłem, ponieważ wymaga to wielu zasobów. Preferowanym sposobem jest ograniczenie tego, co chcesz załadować za pomocą funkcji
addAttributeToFilter()
lubaddFieldToFilter()
, patrz przykład poniżej:źródło
pzirkind ma całkowitą rację, tylko zastanawia się, że nikt nie dba o wydajność. Jeśli chcesz TYLKO pierwszego / ostatniego elementu kolekcji, zawsze powinieneś ograniczyć zapytanie do
1
:Samo użycie
getFirstItem()
nadal ładuje całą kolekcję, a następnie obejmuje pierwszy przedmiot.Przykład : kategoria z 750 produktami
Po prostu
getFirstItem()
:Dodawanie
getSelect()->limit(1)
:źródło
Jak zdobyć ostatni przedmiot:
źródło
@pZirKind ma rację, możesz uzyskać pierwszy przedmiot z kolekcji produktów przy użyciu natywnych metod klasy Varien Collection, takich jak:
źródło
źródło
Spróbuj tego proszę
źródło