/** * @param Asserter $asserter asserter * @param integer $aliasNumber aliasNumber */ public function createFromAsserter(Asserter $asserter, $aliasNumber) { $this->aliasNumber = $aliasNumber; $field = $asserter->getField(); $this->location = QueryBuilder::getFieldLocation($field); $this->isNeedJoin = in_array($this->location, array('timeline', 'actionComponent', 'component')); $locationSql = $this->isNeedJoin ? $this->location . $aliasNumber : $this->location; $sqlDefinition = sprintf('%s.%s', $locationSql, $field); $parameterKey = str_replace('.', '_', $sqlDefinition) . uniqid(); $this->parameters[$parameterKey] = $this->transformValue($asserter->getValue(), $field); $operator = $asserter->getOperator(); switch ($operator) { case Asserter::ASSERTER_IN: case Asserter::ASSERTER_NOT_IN: $this->dql = $sqlDefinition . ' ' . $operator . ' (:' . $parameterKey . ')'; break; default: $this->dql = $sqlDefinition . ' ' . $operator . ' :' . $parameterKey; break; } }
public function testField() { $this->if($model = new TestedModel())->object($model->field('field'))->isInstanceOf('Spy\\Timeline\\Driver\\QueryBuilder\\Criteria\\Asserter')->string($model->getField())->isEqualTo('field'); }