/** * Test that field is quoted when added to SQL via addFieldToFilter() */ public function testAddFieldToFilterFieldIsQuoted() { $adapter = $this->getMock('Magento\\Framework\\DB\\Adapter\\Pdo\\Mysql', ['quoteIdentifier', 'prepareSqlCondition'], [], '', false); $adapter->expects($this->once())->method('quoteIdentifier')->with('email')->will($this->returnValue('`email`')); $adapter->expects($this->any())->method('prepareSqlCondition')->with($this->stringContains('`email`'), $this->anything())->will($this->returnValue('`email` = "*****@*****.**"')); $this->collection->setConnection($adapter); $select = $this->collection->getSelect()->from('test'); $this->collection->addFieldToFilter('email', ['eq' => '*****@*****.**']); $this->assertEquals('SELECT `test`.* FROM `test` WHERE (`email` = "*****@*****.**")', $select->assemble()); }
/** * Apply regular filters like collection filters * * @param AbstractDb $collection * @param Filter $filter * @return void */ public function apply(AbstractDb $collection, Filter $filter) { $collection->addFieldToFilter($filter->getField(), [$filter->getConditionType() => $filter->getValue()]); }
/** * Apply regular filters like collection filters * * @param AbstractDb $collection * @param array $filters * @return void */ public function apply(AbstractDb $collection, $filters) { foreach ($filters as $filter) { $collection->addFieldToFilter($filter['field'], $filter['condition']); } }
/** * @param AbstractDb $collection * @return AbstractDb * @throws LocalizedException */ protected function applySelection(AbstractDb $collection) { $selected = $this->request->getParam(static::SELECTED_PARAM); $excluded = $this->request->getParam(static::EXCLUDED_PARAM); if ('false' === $excluded) { return $collection; } try { if (is_array($excluded) && !empty($excluded)) { $collection->addFieldToFilter($collection->getIdFieldName(), ['nin' => $excluded]); } elseif (is_array($selected) && !empty($selected)) { $collection->addFieldToFilter($collection->getIdFieldName(), ['in' => $selected]); } else { throw new LocalizedException(__('Please select item(s).')); } } catch (\Exception $e) { throw new LocalizedException(__($e->getMessage())); } return $collection; }