protected function _basicQuery() { $statement = new QueryStatement(); $select = (new SelectClause())->addExpression(new AllSelectExpression()); $statement->addClause($select); $from = (new FromClause())->setTable('tbl'); $statement->addClause($from); return $statement; }
public function testAssemblerPrepare() { $stm = new QueryStatement(); $stm->addClause(new SelectClause())->from('mytable'); $stm->where(EqualPredicate::create('field1', 'value1')); $assembler = new QueryAssembler($stm, false); $this->assertEmpty($assembler->getParameters()); $this->assertFalse($assembler->isForPrepare()); $this->assertEquals('SELECT * FROM mytable WHERE field1 = "value1"', (string) $assembler); $stm->andWhere(['AND' => [EqualPredicate::create('field2', null), NotEqualPredicate::create('field3', null)], 'OR' => BetweenPredicate::create('field4', 123, 456)]); $assembler = new QueryAssembler($stm, true); $this->assertNotEmpty($assembler->getParameters()); $this->assertTrue($assembler->isForPrepare()); $this->assertEquals('SELECT * FROM mytable WHERE field1 = ? AND ((field2 IS NULL AND field3 IS NOT NULL) AND field4 BETWEEN ? AND ?)', (string) $assembler); $this->assertEquals(['value1', 123, 456], $assembler->getParameters()); }
public function testClause() { $statement = new QueryStatement(); $this->assertFalse($statement->hasClause('SELECT')); $select = new SelectClause(); $statement->addClause($select); $this->assertSame($select, $statement->getClause('SELECT')); $this->assertTrue($statement->hasClause('SELECT')); $statement->removeClause('SELECT'); $this->assertFalse($statement->hasClause('SELECT')); }
/** * Find all distinct values of a property in the collection * * @param $property * * @return array */ public function distinct($property) { if ($this->isEmpty()) { $select = new SelectClause(); $select->setDistinct(true); $select->addField($property); $originalClause = $this->_query->getClause('SELECT'); $this->_query->addClause($select); $results = $this->_getDataStore()->getData($this->_query); $this->_query->addClause($originalClause); if (empty($results)) { return []; } return Arrays::ipull($results, $property); } return parent::distinct($property); }
protected function _getOrder() { $order = parent::_getOrder(); $order[] = 'ALLOW_FILTERING'; return $order; }