Tôi đang làm như sau để có được một số đơn đặt hàng ra khỏi hệ thống để xuất khẩu:
$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)));
Tôi cần thêm một cái gì đó vào nơi nó không xuất nếu đơn hàng entity_id
nằm trong bảng tùy chỉnh mà tôi có. Nếu tôi đang sử dụng SQL, tôi sẽ làm:
left join myTable as mt on main_table.entity_id = mt.entity_id
where mt.entity_id is null
Nhưng tôi không chắc chắn làm thế nào để sửa đổi truy vấn bộ sưu tập để làm một điều tương tự.
Lưu ý: Tôi đã thử
$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")
nhưng điều này thay đổi nó để nó là một truy vấn và tôi muốn bộ sưu tập bán hàng / đơn hàng được trả lại.
Tôi cảm thấy mình đang thiếu thứ gì đó đơn giản ...
CHỈNH SỬA
Ok, tôi đã thử điều này:
$orders->getSelect()
->joinLeft(
array("t1" => $myTable),
"main_table.entity_id = t1.entity_id",
array("admin_field_id" => "t1.id")
)
->where("t1.id is null");
Khi tôi lặp lại, (string)$orders->getSelect()
nó trả về truy vấn mà tôi mong đợi và không trả về kết quả nào khi tôi chạy nó. $orders
Tuy nhiên, vẫn chứa các mặt hàng. Tôi nghĩ rằng tham gia này là để sửa đổi bộ sưu tập tại thời điểm này?
$orders->getSelect() ->joinLeft(array("t1" => $myTable), "main_table.entity_id = t1.entity_id", array("admin_field_id" => "t1.id")) ->where("t1.id is null")
loại trừ các mục khỏi danh sách hiện tại của tôi?