J'ai cette requête:collection de requêtes SQL dans Magento
$collection = $this->getAssociatedProductCollection($product)
->addAttributeToSelect('*')
->addFilterByRequiredOptions()
->setPositionOrder()
->addStoreFilter($this->getStoreFilter($product))
->addAttributeToFilter('status', array('in' => $this->getStatusFilters($product)))
->addAttributeToSort('my_attribute', 'DESC');
et je veux commander les produits associés par « my_attribute »
L'extrait ->addAttributeToSort('my_attribute', 'DESC');
ne me donne pas le bon résultat parce que j'ai numéros stockés en tant que texte dans mon attribut.
J'ai fais une base de données de test et je l'ai vu que la requête en cours faire le bon ordre dans ma base de données de test:
SELECT * FROM length ORDER BY my_attribute + 0
Ma question est la suivante: comment ajouter le « + 0 » dans ma première requête Magento de faire le bon ordre par :)
[EDIT]
Voici ma fonction modifiée complète:
public function getAssociatedProducts($product = null)
{
if (!$this->getProduct($product)->hasData($this->_keyAssociatedProducts)) {
$associatedProducts = array();
if (!Mage::app()->getStore()->isAdmin()) {
$this->setSaleableStatus($product);
}
$collection = $this->getAssociatedProductCollection($product)
->addAttributeToSelect('*')
->addFilterByRequiredOptions()
->setPositionOrder()
->addStoreFilter($this->getStoreFilter($product))
->addAttributeToFilter('status', array('in' => $this->getStatusFilters($product)))
->addAttributeToSort('breite', 'ASC')
// My Modification
->addAttributeToSort('my_attribute', 'ASC');
// My Modification
foreach ($collection as $item) {
$associatedProducts[] = $item;
}
$this->getProduct($product)->setData($this->_keyAssociatedProducts, $associatedProducts);
}
return $this->getProduct($product)->getData($this->_keyAssociatedProducts);
}
[/ EDIT]
Merci beaucoup. :)
Essayez de trier en utilisant 2 attributs? Je vois que vous appelez addAttributeToSort deux fois –