Je fais ce qui suit pour retirer certaines commandes du système pour l'exportation:
$orders = Mage::getModel('sales/order')->getCollection()
->addFieldToFilter('status', $statusToExport)
->addFieldToFilter('store_id', $this->processingStoreId)
->addFieldToFilter('updated_at', array('gteq' => date('Y-m-d H:i:s', $lastSyncTime)));
J'ai besoin d'ajouter quelque chose là où il n'exporte pas si la commande entity_id
est dans une table personnalisée que j'ai. Si j'utilisais SQL, je ferais:
left join myTable as mt on main_table.entity_id = mt.entity_id
where mt.entity_id is null
Mais je ne sais pas comment modifier la requête de collection pour faire une chose similaire.
Remarque: j'ai essayé
$orders = $orders->getSelect()
->joinLeft(
array("t1" => $myTable),
"main_table.entity_id = t1.entity_id",
array("admin_field_id" => "t1.id")
)
->where("t1.id is null")
mais cela le change donc c'est une requête et je veux que la collection de vente / commande soit retournée.
Je sens que je manque quelque chose de simple ...
MODIFIER
Ok, j'ai essayé ceci:
$orders->getSelect()
->joinLeft(
array("t1" => $myTable),
"main_table.entity_id = t1.entity_id",
array("admin_field_id" => "t1.id")
)
->where("t1.id is null");
Lorsque je fais écho, (string)$orders->getSelect()
il renvoie la requête à laquelle je m'attendais et ne renvoie aucun résultat lorsque je l'exécute. $orders
cependant, contient toujours des éléments. Je pensais que cette jointure était destinée à modifier la collection à ce stade?
$orders->getSelect() ->joinLeft(array("t1" => $myTable), "main_table.entity_id = t1.entity_id", array("admin_field_id" => "t1.id")) ->where("t1.id is null")
exclure les éléments de ma liste actuelle?