Sto facendo quanto segue per ottenere alcuni ordini dal sistema per l'esportazione:
$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)));
Devo aggiungere qualcosa in cui non esporti se l'ordine entity_id
è in una tabella personalizzata che ho. Se stessi usando SQL, farei:
left join myTable as mt on main_table.entity_id = mt.entity_id
where mt.entity_id is null
Ma non sono sicuro di come modificare la query di raccolta per fare una cosa simile.
Nota: ci ho provato
$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")
ma questo lo cambia, quindi è una query e voglio che venga restituita la raccolta vendite / ordini.
Sento che mi manca qualcosa di semplice ...
MODIFICARE
Ok, ho provato questo:
$orders->getSelect()
->joinLeft(
array("t1" => $myTable),
"main_table.entity_id = t1.entity_id",
array("admin_field_id" => "t1.id")
)
->where("t1.id is null");
Quando echo (string)$orders->getSelect()
restituisce la query che mi aspetto e non restituisce risultati quando la eseguo. $orders
tuttavia, contiene ancora elementi. Ho pensato che questo join avrebbe dovuto modificare la raccolta a questo punto?
$orders->getSelect() ->joinLeft(array("t1" => $myTable), "main_table.entity_id = t1.entity_id", array("admin_field_id" => "t1.id")) ->where("t1.id is null")
escludere gli articoli dal mio elenco attuale?