J'essaie de créer une collection de produits basée sur un tableau d'ID de produits et de trier également la collection en fonction du tableau d'ID.
$productIds = array(318,310,311);
$collection = Mage::getModel('catalog/product')
->getCollection()
->setOrder('entity_id', 'asc') // This will not do the job
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('entity_id', array(
'in' => $productIds,
));
Je veux trier les éléments collectés tels qu'ils apparaissent dans le $productIds
tableau, 318, 310, 311
mais le code ci-dessus renverra le tri de la collection comme 310,311, 312
.
Est-ce possible sans utiliser une simple requête MySQL comme indiqué ci-dessous?
SELECT *
FROM catalog_product_entity
WHERE entity_id IN (318,
310,
311)
ORDER BY FIELD(entity_id, 318, 310, 311);
collection
filter
sorting
Tahir Yasin
la source
la source
FIELD(x, 1, 2, 3), FIELD(y, 3, 2, 1)