magento2でOR /およびクエリを作成する方法。

Aug 17 2020

SELECT main_tableskumain_tableorder_idmain_tableparent_item_idmain_tablenamemain_tableproduct_idFROM sales_order_itemAS main_tableWHERE(order_id= '3')AND(parent_item_idNULL IS)AND((skuLIKE 'WSH06%')OR(skuLIKE 'MS10の%')OR(skuLIKE 'MT08%'))

$sku = ['WSH06','MS10','MT08']; $this->itemF ->create()->getCollection()
                       ->addAttributeToSelect('sku')
                       ->addAttributeToSelect('order_id')
                       ->addAttributeToSelect('parent_item_id')
                       ->addAttributeToSelect('name')
                       ->addAttributeToSelect('product_id')
                       ->addAttributeToFilter('order_id', array('eq' => $order_id)) ->addAttributeToFilter('parent_item_id', array('null' => true)); foreach ($sku as $key => $value) {
    $collectionData->addFieldToFilter('sku',array('like' => $value.'%'));
}

回答

1 NiravPatel Aug 17 2020 at 18:02

コレクションを作成または調整する場合は、以下の手順に従う必要があります。

$sku = ['WSH06','MS10','MT08']; $this->itemF ->create()->getCollection()
                       ->addAttributeToSelect('sku')
                       ->addAttributeToSelect('order_id')
                       ->addAttributeToSelect('parent_item_id')
                       ->addAttributeToSelect('name')
                       ->addAttributeToSelect('product_id')
                       ->addAttributeToFilter('order_id', array('eq' => $order_id)) ->addAttributeToFilter('parent_item_id', array('null' => true)); $likeField = [];
$likeValue = [] foreach ($sku as $key => $value) {
    $likeField[] = 'sku'; $likeValue[] = array('like' => $value.'%'); } $collectionData->addFieldToFilter($likeField, $likeValue);
echo $collectionData->getSelect()->__toString();

適用または条件付けするには、addFieldToFilterで配列引数を渡す必要があります。

これがあなたのために働くことを願っています!

ありがとう&よろしく、Nirav Patel