public function testComplex() { $criteria = new KVDdb_Criteria(); $criteria->add(KVDdb_Criterion::equals('provincie_id', 20001)); $query = new KVDdb_SimpleQuery(array('gemeente_id'), 'gemeente', $criteria); $this->assertEquals($query->generateSql(), 'SELECT gemeente_id FROM gemeente WHERE ( provincie_id = 20001 )'); $criterion = KVDdb_Criterion::inSubselect('gemeente_id', $query); $this->assertEquals($criterion->generateSql(), '( gemeente_id IN ( SELECT gemeente_id FROM gemeente WHERE ( provincie_id = 20001 ) ) )'); $criteria2 = new KVDdb_Criteria(); $criteria2->add($criterion); $this->assertEquals($criteria2->generateSql(), 'WHERE ( gemeente_id IN ( SELECT gemeente_id FROM gemeente WHERE ( provincie_id = 20001 ) ) )'); $this->assertFalse($query->hasJoins()); }
/** * testParameterizedWithSubSelect * * Test een geparameterizeerde subselect. Tot voor kort (zie ticket 363 in de OEPS applicatie) bevatte het getValues( ) array een SimpleQuery object. * Probleem zou moeten opgelost zijn, een InSubSelect geeft enkel nog de values van zijn children terug. * @return void */ public function testParameterizedWithSubSelect() { $crit = new KVDdb_Criteria(); $crit->add(KVDdb_Criterion::equals('provincie_id', 20001)); $query = new KVDdb_SimpleQuery(array('gemeente_id'), 'gemeente', $crit); $criterion = KVDdb_Criterion::inSubselect('gemeente_id', $query); $this->criteria->add($criterion); $this->assertEquals("WHERE ( gemeente_id IN ( SELECT gemeente_id FROM gemeente WHERE ( provincie_id = 20001 ) ) )", $this->criteria->generateSql(KVDdb_Criteria::MODE_FILLED)); $this->assertEquals("WHERE ( gemeente_id IN ( SELECT gemeente_id FROM gemeente WHERE ( provincie_id = ? ) ) )", $this->criteria->generateSql(KVDdb_Criteria::MODE_PARAMETERIZED)); $this->assertEquals(array('20001'), $this->criteria->getValues()); }