/** * Converts a comparison expression into the target query language output. * * @param \Doctrine\Common\Collections\Expr\Comparison $comparison * * @return mixed */ public function walkComparison(Comparison $comparison) { $field = $comparison->getField(); $value = $comparison->getValue()->getValue(); // shortcut for walkValue() if (isset($this->classMetadata->associationMappings[$field]) && $value !== null && !is_object($value) && !in_array($comparison->getOperator(), array(Comparison::IN, Comparison::NIN))) { throw PersisterException::matchingAssocationFieldRequiresObject($this->classMetadata->name, $field); } return $this->persister->getSelectConditionStatementSQL($field, $value, null, $comparison->getOperator()); }
/** * @param string $field * @param mixed $value * @param null $assoc * @param null $comparison * * @return string */ public function getSelectConditionStatementSQL($field, $value, $assoc = null, $comparison = null) { $condition = parent::getSelectConditionStatementSQL($field, $value, $assoc, $comparison); $condition = preg_replace('/(\\.(@?\\b\\w+?\\b))/', '$2', $condition); return $condition; }
/** * @group DDC-3056 */ public function testSelectConditionStatementWithMultipleValuesContainingNull() { $this->assertEquals('(t0.id IN (?) OR t0.id IS NULL)', $this->_persister->getSelectConditionStatementSQL('id', array(null))); $this->assertEquals('(t0.id IN (?) OR t0.id IS NULL)', $this->_persister->getSelectConditionStatementSQL('id', array(null, 123))); $this->assertEquals('(t0.id IN (?) OR t0.id IS NULL)', $this->_persister->getSelectConditionStatementSQL('id', array(123, null))); }
/** * @expectedException Doctrine\ORM\ORMException */ public function testSelectConditionStatementIn() { $this->_persister->getSelectConditionStatementSQL('admin1', array(), array(), Comparison::IN); }