ฉันกำลังทำสิ่งต่อไปนี้เพื่อรับคำสั่งบางส่วนจากระบบเพื่อการส่งออก:
$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")แต่นี่เป็นการเปลี่ยนแปลงเพื่อให้เป็นแบบสอบถามและฉันต้องการให้คอลเลกชันการขาย / การสั่งซื้อคืน
ฉันรู้สึกว่าฉันขาดอะไรง่าย ๆ ...
แก้ไข
ตกลงฉันได้ลองสิ่งนี้แล้ว:
$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")แยกรายการออกจากรายการปัจจุบันของฉัน