Domanda

Ho una semplice IndexController.

Quando uso questo:

$collection = Mage::getModel('catalog/product')
                        ->getCollection()
                        ->addAttributeToSelect('*');
echo count($collection);

Non mostra tutto il prodotto (solo alcuni), che cosa potrebbe la ragione di questo essere? Vorrei caricare tutti i prodotti, non importa quale sia lo stato è.

UPDATE: Grazie a Alan Tempesta ho trovato la risposta. In utilizzando: echo (string) $collection->getSelect(); ho visto: (_table_name.store_id = 5)

impostandolo su storeId 0 ( 'admin' per così dire) sono stato in grado di vedere tutto il prodotto.

Suoni logico ... come sempre: -)

È stato utile?

Soluzione

Purtroppo, ci sono troppi motivi alla lista (o di conoscere ancora) il motivo per cui la vostra collezione di prodotto potrebbe non essere di ritorno tutti i prodotti si pensa che dovrebbe. Può essere un bug, può essere un prolungamento è stato installato, o può essere si dispone di un malinteso, come a ciò che è tornato in una collezione di default.

Per fortuna, questa è una cosa relativamente semplice per eseguire il debug da soli. È possibile dare uno sguardo alla dichiarazione SELECT utilizzato dalla collezione per popolare i suoi oggetti iniziali.

$collection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*'); 

echo (string) $collection->getSelect();  

Con che SQL in mano, dovrebbe essere abbastanza facile da dire perché Magento non restituisce gli oggetti si pensa che dovrebbe.

Altri suggerimenti

C'è più di un modo per ottenere il conteggio di elementi in una collezione. Purtroppo la funzione count interna PHP non è probabilmente il modo più performante.

Qui ci sono gli altri due da provare:

echo $collection->count();

echo $collection->getSize();

Quello che ho il sospetto che sta accadendo è sia la vostra collezione non è così profonda come si pensa che è; v'è un problema di memoria con la funzione PHP count (itera la collezione come un array); o count non è a conoscenza di quanti articoli ci sono in realtà causa pigro carico, dove la raccolta non è in realtà di essere caricati fino al momento si sta chiedendo per il suo conteggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top