Comment écrire OU/et interroger dans magento2. ?
Aug 17 2020
CHOISIR main_table. sku, main_table. order_id, main_table. parent_item_id, main_table. name, main_table. product_idFROM sales_order_itemAS main_tableWHERE ( order_id= '3') AND ( parent_item_idIS NULL) 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.'%'));
}
Réponses
1 NiravPatel Aug 17 2020 at 18:02
si vous souhaitez créer ou conditionner dans la collection, vous devez suivre les étapes ci-dessous.
$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();
vous devez passer un argument de tableau dans addFieldToFilter pour appliquer ou conditionner.
j'espère que cela fonctionnera pour vous!
Merci et Regards, Nirav Patel