diff --git a/include/class.orm.php b/include/class.orm.php index 3508d9273ed70d1f9cf00908c52b981bc5dcce66..8d32361b8d43272f3cb78d4ef5697ea2106807e4 100644 --- a/include/class.orm.php +++ b/include/class.orm.php @@ -33,6 +33,7 @@ class ModelMeta implements ArrayAccess { 'table' => false, 'defer' => array(), 'select_related' => array(), + 'view' => false, ); var $model; @@ -1605,7 +1606,11 @@ class MySqlCompiler extends SqlCompiler { if ($extra instanceof Q) { $constraints[] = $this->compileQ($extra, $model, self::SLOT_JOINS); } - return $join.$this->quote($rmodel::$meta['table']) + // Support inline views + $table = ($rmodel::$meta['view']) + ? $rmodel::getQuery($this) + : $this->quote($rmodel::$meta['table']); + return $join.$table .' '.$alias.' ON ('.implode(' AND ', $constraints).')'; }