Wykonuję następujące czynności, aby uzyskać niektóre zamówienia z systemu na eksport:
$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)));
Muszę dodać coś, co nie eksportuje, jeśli zamówienie entity_id
znajduje się w niestandardowej tabeli, którą mam. Gdybym korzystał z SQL, zrobiłbym:
left join myTable as mt on main_table.entity_id = mt.entity_id
where mt.entity_id is null
Ale nie jestem pewien, jak zmodyfikować kwerendę kolekcji, aby zrobić podobnie.
Uwaga: próbowałem
$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")
ale to zmienia to, więc jest to zapytanie i chcę zwrócić kolekcję sprzedaży / zamówienia.
Czuję, że brakuje mi czegoś prostego ...
EDYTOWAĆ
Ok, próbowałem tego:
$orders->getSelect()
->joinLeft(
array("t1" => $myTable),
"main_table.entity_id = t1.entity_id",
array("admin_field_id" => "t1.id")
)
->where("t1.id is null");
Gdy echo (string)$orders->getSelect()
, zwraca zapytanie, którego oczekiwałbym i nie zwraca żadnych wyników po uruchomieniu. $orders
jednak nadal zawiera elementy. Myślałem, że to połączenie miało w tym momencie zmodyfikować kolekcję?
$orders->getSelect() ->joinLeft(array("t1" => $myTable), "main_table.entity_id = t1.entity_id", array("admin_field_id" => "t1.id")) ->where("t1.id is null")
wykluczać elementów z mojej bieżącej listy?