エクスポートのためにシステムからいくつかの注文を取得するために、次のことを行っています。
$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")
ただし、これによりクエリが変更されるため、販売/注文のコレクションを返す必要があります。
シンプルなものが足りないと感じています...
編集
OK、私はこれを試しました:
$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")
、現在のリストからアイテムを除外すべきではありませんか?