【问题标题】:How to add OR condition in Magento Collection如何在 Magento Collection 中添加 OR 条件
【发布时间】:2012-09-16 19:11:03
【问题描述】:

我想通过在 Collection

中应用 OR 条件从表中获取数据

我正在使用这些代码行

$collect = Mage::getModel('storelocater/storelocater')->getCollection()->addFieldToFilter(array( 数组(
'属性' => '国家', 'eq' => '印度'),
数组(
'属性' => '状态', 'eq' => '向上')
)); 回声 $data = $collect->getSelect();

它打印输出

SELECT main_table.* FROM storelocater AS main_table WHERE ((Array = '') OR (Array = ''))

我也使用 addAttributeToFilter 而不是 addFieldToFilter 但它返回致命错误

【问题讨论】:

  • 你有没有试过这个链接stackoverflow.com/questions/5301231/…它对我有用,或者收集条件
  • 是的,我试过这个。但 addAtrributeToFilter() 函数仅适用于 EAV 实体。它不适用于自定义表格。

标签: magento magento-1.7


【解决方案1】:

addAttributeToFilter 函数仅适用于 EAV 实体(如客户、产品、类别等)。 addFieldToFilter OR 运算符的语法略有不同:

$collect  = Mage::getModel('storelocater/storelocater')
    ->getCollection()->addFieldToFilter(array('country','state'), array('india','up'));

【讨论】:

    【解决方案2】:

    除了Slayer Birden的回答。

    您还可以创建更复杂的查询,例如

        $rulesCollection
            ->addOrder('sort_order', Zend_Db_Select::SQL_ASC)
            ->addFieldToFilter(
                array('to_date', 'to_date'),
                array(array('gteq' => $now), array('null' => 'null')))
            ->addFieldToFilter(
                array('from_date', 'from_date'),
                array(array('lteq' => $now), array('null' => 'null')))
            ->addFieldToFilter('is_active', '1');
    

    构造了这样的SQL:

         SELECT `main_table`.* FROM `enterprise_targetrule` AS `main_table` 
         WHERE ((to_date >= '2013-03-21') OR (to_date IS NULL)) 
         AND ((from_date <= '2013-03-21') OR (from_date IS NULL)) 
         AND (is_active = '1') 
         ORDER BY sort_order ASC
    

    【讨论】:

      【解决方案3】:
      $collection->addFieldToFilter(array(
                      array('attribute'=>'name', array('like' => '%'.$qry.'%')),
                      array('attribute'=>'sku',  array('like' => '%'.$qry.'%'))));
      for search by name and search by sku
      

      【讨论】:

        【解决方案4】:

        对于 $collections = Mage::getModel('sales/order')->getCollection() ->addAttributeToFilter('increment_id', array('in' => $sellerIncrementIds)) ->addAttributeToFilter('status', ['in' => ['pending','pending_seller_confirmation']]);

        【讨论】:

          猜你喜欢
          • 2014-02-17
          • 1970-01-01
          • 1970-01-01
          • 2016-09-22
          • 2019-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-27
          相关资源
          最近更新 更多