Я роблю наступне, щоб отримати деякі замовлення з системи на експорт:
$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)));
Мені потрібно додати щось там, де воно не експортується, якщо замовлення entity_id
знаходиться у спеціальній таблиці, яку я маю. Якби я використовував SQL, я би зробив:
left join myTable as mt on main_table.entity_id = mt.entity_id
where mt.entity_id is null
Але я не впевнений, як змінити запит колекції, щоб зробити подібну дію.
Примітка: я намагався
$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")
але це змінює його, так що це запит, і я хочу, щоб продажі / замовлення повернулися.
Я відчуваю, що мені не вистачає чогось простого ...
EDIT
Гаразд, я спробував це:
$orders->getSelect()
->joinLeft(
array("t1" => $myTable),
"main_table.entity_id = t1.entity_id",
array("admin_field_id" => "t1.id")
)
->where("t1.id is null");
Коли я повторюю, (string)$orders->getSelect()
він повертає запит, який я очікував, і не повертає результатів, коли його запускаю. $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")
виключати елементи з мого поточного списку?