public function testFk() { $model = new \Simple\Model(['table' => 'superA', 'pk' => 'primaryA']); $modelB = new \Simple\Model(['table' => 'superB', 'pk' => 'primaryB']); $this->assertEquals($model->pk(), 'primaryA'); $this->assertEquals($model->field('work'), 'superA.work'); $this->assertEquals($model->fk($modelB), 'superA.primaryBSuperB'); }
public function testSubQueries() { $modelA = new \Simple\Model(['table' => 'superA', 'alias' => 'A']); $modelB = new \Simple\Model(['table' => 'log', 'alias' => 'B']); $modelC = new \Simple\Model(['table' => 'megaC', 'alias' => 'C']); $expectSql = 'SELECT A.* FROM superA AS A WHERE A.idSuperA IN (SELECT B.idSuperA FROM log AS B WHERE date BETWEEN (?) AND (?))'; $query = new \Simple\Query($modelA); $query->select($modelA->field('*')); $queryLogModelA = (new \Simple\Query($modelB))->select($modelB->fk($modelA))->where('date BETWEEN (?) AND (?)', [1, 2], 'RAW'); $query->where($modelA->field($modelA->pk()), $queryLogModelA, 'IN'); $this->assertEquals($expectSql, $query->sqlSelect()); $this->assertEquals(array(1, 2), $query->bindParameters); }