Think\Db\Query::view PHP Method

view() public method

指定JOIN查询字段
public view ( $join, string | array $field = true, string | array $on = null, string $type = 'INNER' )
$field string | array 查询字段
$on string | array JOIN条件
$type string JOIN类型
    public function view($join, $field = true, $on = null, $type = 'INNER')
    {
        $this->options['view'] = true;
        if (is_array($join) && is_null($field)) {
            foreach ($join as $key => $val) {
                $this->view($key, $val[0], isset($val[1]) ? $val[1] : null, isset($val[2]) ? $val[2] : 'INNER');
            }
        } else {
            $fields = [];
            if (is_array($join)) {
                // 支持数据表别名
                list($join, $alias, $table) = array_pad($join, 3, '');
            } else {
                $alias = $join;
            }
            $table = !empty($table) ? $table : $this->getTable($join);
            if (true === $field) {
                $fields = $alias . '.*';
            } else {
                if (is_string($field)) {
                    $field = explode(',', $field);
                }
                foreach ($field as $key => $val) {
                    if (is_numeric($key)) {
                        $fields[] = $alias . '.' . $val;
                        $this->options['map'][$val] = $alias . '.' . $val;
                    } else {
                        if (preg_match('/[,=\\.\'\\"\\(\\s]/', $key)) {
                            $name = $key;
                        } else {
                            $name = $alias . '.' . $key;
                        }
                        $fields[] = $name . ' AS ' . $val;
                        $this->options['map'][$val] = $name;
                    }
                }
            }
            $this->field($fields);
            if ($on) {
                $this->join($table . ' ' . $alias, $on, $type);
            } else {
                $this->table($table . ' ' . $alias);
            }
        }
        return $this;
    }