mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-01 20:52:48 +08:00
Merge branch 'master' of https://github.com/top-think/framework
This commit is contained in:
@@ -1144,8 +1144,9 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
||||
->join($table . ' b', 'a.' . $info['localKey'] . '=b.' . $info['foreignKey'], $info['joinType'])
|
||||
->group('b.' . $info['foreignKey'])
|
||||
->having('count(' . $id . ')' . $operator . $count);
|
||||
case Relation::HAS_MANY_THROUGH:
|
||||
// TODO
|
||||
case Relation::HAS_MANY_THROUGH: // TODO
|
||||
default:
|
||||
return $model;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1176,8 +1177,9 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
||||
->field('a.*')
|
||||
->join($table . ' b', 'a.' . $info['localKey'] . '=b.' . $info['foreignKey'], $info['joinType'])
|
||||
->where($where);
|
||||
case Relation::HAS_MANY_THROUGH:
|
||||
// TODO
|
||||
case Relation::HAS_MANY_THROUGH: // TODO
|
||||
default:
|
||||
return $model;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -305,7 +305,8 @@ class Route
|
||||
}
|
||||
$vars = self::parseVar($rule);
|
||||
if (isset($name)) {
|
||||
self::name($name, [$rule, $vars, self::$domain]);
|
||||
$key = $group ? $group . '/' . $rule : $rule;
|
||||
self::name($name, [$key, $vars, self::$domain]);
|
||||
}
|
||||
if ($group) {
|
||||
if ('*' != $type) {
|
||||
@@ -425,7 +426,7 @@ class Route
|
||||
$vars = self::parseVar($key);
|
||||
$item[] = ['rule' => $key, 'route' => $route, 'var' => $vars, 'option' => $options, 'pattern' => $patterns];
|
||||
// 设置路由标识
|
||||
self::name($route, [$key, $vars, self::$domain]);
|
||||
self::name($route, [$name . '/' . $key, $vars, self::$domain]);
|
||||
}
|
||||
self::$rules['*'][$name] = ['rule' => $item, 'route' => '', 'var' => [], 'option' => $option, 'pattern' => $pattern];
|
||||
}
|
||||
|
||||
@@ -959,78 +959,66 @@ class Template
|
||||
* @param array $vars 变量数组
|
||||
* @return string
|
||||
*/
|
||||
public function parseThinkVar(&$vars)
|
||||
public function parseThinkVar($vars)
|
||||
{
|
||||
$vars[0] = strtoupper(trim($vars[0]));
|
||||
$parseStr = '';
|
||||
if (count($vars) >= 2) {
|
||||
$vars[1] = trim($vars[1]);
|
||||
switch ($vars[0]) {
|
||||
$type = strtoupper(trim(array_shift($vars)));
|
||||
$param = implode('.', $vars);
|
||||
if ($vars) {
|
||||
switch ($type) {
|
||||
case 'SERVER':
|
||||
$parseStr = '$_SERVER[\'' . strtoupper($vars[1]) . '\']';
|
||||
$parseStr = '\\think\\Request::instance()->server(\'' . $param . '\')';
|
||||
break;
|
||||
case 'GET':
|
||||
$parseStr = '$_GET[\'' . $vars[1] . '\']';
|
||||
$parseStr = '\\think\\Request::instance()->get(\'' . $param . '\')';
|
||||
break;
|
||||
case 'POST':
|
||||
$parseStr = '$_POST[\'' . $vars[1] . '\']';
|
||||
$parseStr = '\\think\\Request::instance()->post(\'' . $param . '\')';
|
||||
break;
|
||||
case 'COOKIE':
|
||||
if (isset($vars[2])) {
|
||||
$parseStr = '\\think\\Cookie::get(\'' . $vars[1] . '.' . $vars[2] . '\')';
|
||||
} else {
|
||||
$parseStr = '\\think\\Cookie::get(\'' . $vars[1] . '\')';
|
||||
}
|
||||
$parseStr = '\\think\\Cookie::get(\'' . $param . '\')';
|
||||
break;
|
||||
case 'SESSION':
|
||||
if (isset($vars[2])) {
|
||||
$parseStr = '\\think\\Session::get(\'' . $vars[1] . '.' . $vars[2] . '\')';
|
||||
} else {
|
||||
$parseStr = '\\think\\Session::get(\'' . $vars[1] . '\')';
|
||||
}
|
||||
$parseStr = '\\think\\Session::get(\'' . $param . '\')';
|
||||
break;
|
||||
case 'ENV':
|
||||
$parseStr = '$_ENV[\'' . strtoupper($vars[1]) . '\']';
|
||||
$parseStr = '\\think\\Request::instance()->env(\'' . $param . '\')';
|
||||
break;
|
||||
case 'REQUEST':
|
||||
$parseStr = '$_REQUEST[\'' . $vars[1] . '\']';
|
||||
$parseStr = '\\think\\Request::instance()->request(\'' . $param . '\')';
|
||||
break;
|
||||
case 'CONST':
|
||||
$parseStr = strtoupper($vars[1]);
|
||||
$parseStr = strtoupper($param);
|
||||
break;
|
||||
case 'LANG':
|
||||
$parseStr = '\\think\\Lang::get(\'' . $vars[1] . '\')';
|
||||
$parseStr = '\\think\\Lang::get(\'' . $param . '\')';
|
||||
break;
|
||||
case 'CONFIG':
|
||||
if (isset($vars[2])) {
|
||||
$vars[1] .= '.' . $vars[2];
|
||||
}
|
||||
$parseStr = '\\think\\Config::get(\'' . $vars[1] . '\')';
|
||||
$parseStr = '\\think\\Config::get(\'' . $param . '\')';
|
||||
break;
|
||||
default:
|
||||
$parseStr = '\'\'';
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (count($vars) == 1) {
|
||||
switch ($vars[0]) {
|
||||
case 'NOW':
|
||||
$parseStr = "date('Y-m-d g:i a',time())";
|
||||
break;
|
||||
case 'VERSION':
|
||||
$parseStr = 'THINK_VERSION';
|
||||
break;
|
||||
case 'LDELIM':
|
||||
$parseStr = '\'' . ltrim($this->config['tpl_begin'], '\\') . '\'';
|
||||
break;
|
||||
case 'RDELIM':
|
||||
$parseStr = '\'' . ltrim($this->config['tpl_end'], '\\') . '\'';
|
||||
break;
|
||||
default:
|
||||
if (defined($vars[0])) {
|
||||
$parseStr = $vars[0];
|
||||
}
|
||||
}
|
||||
switch ($type) {
|
||||
case 'NOW':
|
||||
$parseStr = "date('Y-m-d g:i a',time())";
|
||||
break;
|
||||
case 'VERSION':
|
||||
$parseStr = 'THINK_VERSION';
|
||||
break;
|
||||
case 'LDELIM':
|
||||
$parseStr = '\'' . ltrim($this->config['tpl_begin'], '\\') . '\'';
|
||||
break;
|
||||
case 'RDELIM':
|
||||
$parseStr = '\'' . ltrim($this->config['tpl_end'], '\\') . '\'';
|
||||
break;
|
||||
default:
|
||||
if (defined($type)) {
|
||||
$parseStr = $type;
|
||||
} else {
|
||||
$parseStr = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
return $parseStr;
|
||||
|
||||
@@ -377,7 +377,7 @@ class Query
|
||||
*/
|
||||
public function value($field, $default = null)
|
||||
{
|
||||
$result = null;
|
||||
$result = false;
|
||||
if (!empty($this->options['cache'])) {
|
||||
// 判断查询缓存
|
||||
$cache = $this->options['cache'];
|
||||
@@ -387,7 +387,7 @@ class Query
|
||||
$key = is_string($cache['key']) ? $cache['key'] : md5($field . serialize($this->options));
|
||||
$result = Cache::get($key);
|
||||
}
|
||||
if (!$result) {
|
||||
if (false === $result) {
|
||||
if (isset($this->options['field'])) {
|
||||
unset($this->options['field']);
|
||||
}
|
||||
@@ -409,7 +409,7 @@ class Query
|
||||
// 清空查询条件
|
||||
$this->options = [];
|
||||
}
|
||||
return !is_null($result) ? $result : $default;
|
||||
return false !== $result ? $result : $default;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -431,7 +431,7 @@ class Query
|
||||
$guid = is_string($cache['key']) ? $cache['key'] : md5($field . serialize($this->options));
|
||||
$result = Cache::get($guid);
|
||||
}
|
||||
if (!$result) {
|
||||
if (false === $result) {
|
||||
if (isset($this->options['field'])) {
|
||||
unset($this->options['field']);
|
||||
}
|
||||
@@ -667,19 +667,17 @@ class Query
|
||||
if (is_array($join)) {
|
||||
if (0 !== $key = key($join)) {
|
||||
// 设置了键名则键名为表名,键值作为表的别名
|
||||
$table = $key;
|
||||
$alias = array_shift($join);
|
||||
$this->alias([$table => $alias]);
|
||||
$table = [$table => $alias];
|
||||
$table = [$key => array_shift($join)];
|
||||
$this->alias($table);
|
||||
} else {
|
||||
$table = array_shift($join);
|
||||
}
|
||||
} else {
|
||||
$table = trim($join);
|
||||
if (strpos($table, ' ')) {
|
||||
if (strpos($table, ' ') && !strpos($table, ')')) {
|
||||
list($table, $alias) = explode(' ', $table);
|
||||
$this->alias([$table => $alias]);
|
||||
$table = [$table => $alias];
|
||||
$table = [$table => $alias];
|
||||
$this->alias($table);
|
||||
}
|
||||
}
|
||||
$this->options['join'][] = [$table, strtoupper($type), $condition];
|
||||
|
||||
@@ -291,15 +291,15 @@ EOF;
|
||||
{\$Think.SITE.URL}
|
||||
EOF;
|
||||
$data = <<<EOF
|
||||
<?php echo \$_SERVER['SERVER_NAME']; ?><br/>
|
||||
<?php echo \$_GET['action']; ?><br/>
|
||||
<?php echo \$_POST['action']; ?><br/>
|
||||
<?php echo \\think\\Request::instance()->server('SERVER_NAME'); ?><br/>
|
||||
<?php echo \\think\\Request::instance()->get('action'); ?><br/>
|
||||
<?php echo \\think\\Request::instance()->post('action'); ?><br/>
|
||||
<?php echo \\think\\Cookie::get('action'); ?><br/>
|
||||
<?php echo \\think\\Cookie::get('action.name'); ?><br/>
|
||||
<?php echo \\think\\Session::get('action'); ?><br/>
|
||||
<?php echo \\think\\Session::get('action.name'); ?><br/>
|
||||
<?php echo \$_ENV['OS']; ?><br/>
|
||||
<?php echo \$_REQUEST['action']; ?><br/>
|
||||
<?php echo \\think\\Request::instance()->env('OS'); ?><br/>
|
||||
<?php echo \\think\\Request::instance()->request('action'); ?><br/>
|
||||
<?php echo SITE_NAME; ?><br/>
|
||||
<?php echo \\think\\Lang::get('action'); ?><br/>
|
||||
<?php echo \\think\\Config::get('action.name'); ?><br/>
|
||||
|
||||
Reference in New Issue
Block a user