protected function onlyCustomer($query, $request) { if (isset($request['onlyCustomer'])) { $modelOrder = \Simple\Factory::model('order', 'O'); $queryJoin = \Simple\Factory::queryJoin($modelUser, $modelOrder); $query->join('left', $queryJoin); $query->where($modelOrder->field($modelOrder->pk()), 'NULL', 'IS NOT'); } }
public function testQueryJoinWithArray() { $modelA = \Simple\Factory::model('superA', 'A'); $modelB = \Simple\Factory::model('hiperB', 'B'); $queryJoin = \Simple\Factory::queryJoin($modelA, array('hiperB', 'B')); $queryJoin->where($modelB->field('name'), 'john'); $query = \Simple\Factory::query(array('superA', 'A')); $query->select($modelA->field('*')); $query->join('left', $queryJoin); $this->assertEquals('SELECT A.* FROM superA AS A LEFT JOIN hiperB AS B ON A.idSuperA = B.idSuperA AND B.name = (?)', $query->sqlSelect()); }
protected function parseInclude($req, $query) { foreach (['left', 'right'] as $joinType) { $includes = (array) $req->getParam($joinType); foreach ($includes as $table => $include) { if (empty($include)) { $model = \Simple\Factory::model($table); $query->join($joinType, $model); continue; } $queryJoin = \Simple\Factory::query($table); $queryJoin->equal($query->from->field($include), $queryJoin->from->field($include)); $query->join($joinType, $queryJoin); } } }