mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 23:22:48 +08:00
修正方法
This commit is contained in:
@@ -512,13 +512,13 @@ abstract class Driver
|
|||||||
*/
|
*/
|
||||||
public function union($union, $all = false)
|
public function union($union, $all = false)
|
||||||
{
|
{
|
||||||
$this->options['union']['type'] = $all?'UNION ALL':'UNION';
|
$this->options['union']['type'] = $all ? 'UNION ALL' : 'UNION';
|
||||||
|
|
||||||
if(is_array($union)){
|
if (is_array($union)) {
|
||||||
$this->options['union'] = array_merge($this->options['union'],$union);
|
$this->options['union'] = array_merge($this->options['union'], $union);
|
||||||
}else{
|
} else {
|
||||||
$this->options['union'][] = $union;
|
$this->options['union'][] = $union;
|
||||||
}
|
}
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -663,7 +663,7 @@ abstract class Driver
|
|||||||
* @param mixed $condition 查询条件
|
* @param mixed $condition 查询条件
|
||||||
* @return Model
|
* @return Model
|
||||||
*/
|
*/
|
||||||
public function or($field, $op = null, $condition = null)
|
public function whereOr($field, $op = null, $condition = null)
|
||||||
{
|
{
|
||||||
if ($field instanceof \Closure) {
|
if ($field instanceof \Closure) {
|
||||||
$where[] = $field;
|
$where[] = $field;
|
||||||
@@ -1547,12 +1547,12 @@ abstract class Driver
|
|||||||
$whereStr .= $key . ' ' . $value;
|
$whereStr .= $key . ' ' . $value;
|
||||||
} elseif (in_array($exp, ['NOT IN', 'IN'])) {
|
} elseif (in_array($exp, ['NOT IN', 'IN'])) {
|
||||||
// IN 查询
|
// IN 查询
|
||||||
if($value instanceof \Closure){
|
if ($value instanceof \Closure) {
|
||||||
$whereStr .= $key . ' '.$exp . ' ' . $this->parseClosure($value);
|
$whereStr .= $key . ' ' . $exp . ' ' . $this->parseClosure($value);
|
||||||
}else{
|
} else {
|
||||||
$value = is_string($value) ? explode(',', $value) : $value;
|
$value = is_string($value) ? explode(',', $value) : $value;
|
||||||
$zone = implode(',', $this->parseValue($value));
|
$zone = implode(',', $this->parseValue($value));
|
||||||
$whereStr .= $key . ' ' . $exp . ' (' . $zone . ')';
|
$whereStr .= $key . ' ' . $exp . ' (' . $zone . ')';
|
||||||
}
|
}
|
||||||
} elseif (in_array($exp, ['NOT BETWEEN', 'BETWEEN'])) {
|
} elseif (in_array($exp, ['NOT BETWEEN', 'BETWEEN'])) {
|
||||||
// BETWEEN 查询
|
// BETWEEN 查询
|
||||||
@@ -1566,10 +1566,11 @@ abstract class Driver
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 执行闭包子查询
|
// 执行闭包子查询
|
||||||
protected function parseClosure($call,$show=true){
|
protected function parseClosure($call, $show = true)
|
||||||
|
{
|
||||||
$class = clone $this;
|
$class = clone $this;
|
||||||
call_user_func_array($call, [ & $class]);
|
call_user_func_array($call, [ & $class]);
|
||||||
return $class->buildSql($show);
|
return $class->buildSql($show);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1677,17 +1678,17 @@ abstract class Driver
|
|||||||
*/
|
*/
|
||||||
protected function parseUnion($union)
|
protected function parseUnion($union)
|
||||||
{
|
{
|
||||||
if(empty($union)){
|
if (empty($union)) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
$type = $union['type'];
|
$type = $union['type'];
|
||||||
unset($union['type']);
|
unset($union['type']);
|
||||||
foreach ($union as $u) {
|
foreach ($union as $u) {
|
||||||
if($u instanceof \Closure){
|
if ($u instanceof \Closure) {
|
||||||
$sql[] = $type . ' ' . $this->parseClosure($u,false);
|
$sql[] = $type . ' ' . $this->parseClosure($u, false);
|
||||||
}elseif(is_string($u)){
|
} elseif (is_string($u)) {
|
||||||
$sql[] = $type .' '.$this->parseSqlTable($u);
|
$sql[] = $type . ' ' . $this->parseSqlTable($u);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return implode(' ', $sql);
|
return implode(' ', $sql);
|
||||||
}
|
}
|
||||||
@@ -1729,7 +1730,7 @@ abstract class Driver
|
|||||||
// 兼容数字传入方式
|
// 兼容数字传入方式
|
||||||
$sql = ($replace ? 'REPLACE' : 'INSERT') . ' INTO ' . $this->parseTable($options['table']) . ' (' . implode(',', $fields) . ') VALUES (' . implode(',', $values) . ')';
|
$sql = ($replace ? 'REPLACE' : 'INSERT') . ' INTO ' . $this->parseTable($options['table']) . ' (' . implode(',', $fields) . ') VALUES (' . implode(',', $values) . ')';
|
||||||
$sql .= $this->parseComment(!empty($options['comment']) ? $options['comment'] : '');
|
$sql .= $this->parseComment(!empty($options['comment']) ? $options['comment'] : '');
|
||||||
$result = $this->execute($sql, isset($options['bind'])?$options['bind']:[], !empty($options['fetch_sql']) ? true : false);
|
$result = $this->execute($sql, isset($options['bind']) ? $options['bind'] : [], !empty($options['fetch_sql']) ? true : false);
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1754,7 +1755,7 @@ abstract class Driver
|
|||||||
}
|
}
|
||||||
$sql = 'INSERT INTO ' . $this->parseTable($options['table']) . ' (' . implode(',', $fields) . ') ' . implode(' UNION ALL ', $values);
|
$sql = 'INSERT INTO ' . $this->parseTable($options['table']) . ' (' . implode(',', $fields) . ') ' . implode(' UNION ALL ', $values);
|
||||||
$sql .= $this->parseComment(!empty($options['comment']) ? $options['comment'] : '');
|
$sql .= $this->parseComment(!empty($options['comment']) ? $options['comment'] : '');
|
||||||
return $this->execute($sql, isset($options['bind'])?$options['bind']:[], !empty($options['fetch_sql']) ? true : false);
|
return $this->execute($sql, isset($options['bind']) ? $options['bind'] : [], !empty($options['fetch_sql']) ? true : false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1775,7 +1776,7 @@ abstract class Driver
|
|||||||
$fields = array_map([$this, 'parseKey'], $fields);
|
$fields = array_map([$this, 'parseKey'], $fields);
|
||||||
$sql = 'INSERT INTO ' . $this->parseTable($table) . ' (' . implode(',', $fields) . ') ';
|
$sql = 'INSERT INTO ' . $this->parseTable($table) . ' (' . implode(',', $fields) . ') ';
|
||||||
$sql .= $this->buildSelectSql($options);
|
$sql .= $this->buildSelectSql($options);
|
||||||
return $this->execute($sql, isset($options['bind'])?$options['bind']:[], !empty($options['fetch_sql']) ? true : false);
|
return $this->execute($sql, isset($options['bind']) ? $options['bind'] : [], !empty($options['fetch_sql']) ? true : false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1832,7 +1833,7 @@ abstract class Driver
|
|||||||
. $this->parseLimit(!empty($options['limit']) ? $options['limit'] : '');
|
. $this->parseLimit(!empty($options['limit']) ? $options['limit'] : '');
|
||||||
}
|
}
|
||||||
$sql .= $this->parseComment(!empty($options['comment']) ? $options['comment'] : '');
|
$sql .= $this->parseComment(!empty($options['comment']) ? $options['comment'] : '');
|
||||||
return $this->execute($sql, isset($options['bind'])?$options['bind']:[], !empty($options['fetch_sql']) ? true : false);
|
return $this->execute($sql, isset($options['bind']) ? $options['bind'] : [], !empty($options['fetch_sql']) ? true : false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1870,12 +1871,12 @@ abstract class Driver
|
|||||||
. $this->parseLimit(!empty($options['limit']) ? $options['limit'] : '');
|
. $this->parseLimit(!empty($options['limit']) ? $options['limit'] : '');
|
||||||
}
|
}
|
||||||
$sql .= $this->parseComment(!empty($options['comment']) ? $options['comment'] : '');
|
$sql .= $this->parseComment(!empty($options['comment']) ? $options['comment'] : '');
|
||||||
return $this->execute($sql, isset($options['bind'])?$options['bind']:[], !empty($options['fetch_sql']) ? true : false);
|
return $this->execute($sql, isset($options['bind']) ? $options['bind'] : [], !empty($options['fetch_sql']) ? true : false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildSql($sub=true)
|
public function buildSql($sub = true)
|
||||||
{
|
{
|
||||||
return $sub? '( ' . $this->select(false) . ' )' : $this->select(false);
|
return $sub ? '( ' . $this->select(false) . ' )' : $this->select(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1896,7 +1897,7 @@ abstract class Driver
|
|||||||
|
|
||||||
$options = $this->_parseOptions();
|
$options = $this->_parseOptions();
|
||||||
$sql = $this->buildSelectSql($options);
|
$sql = $this->buildSelectSql($options);
|
||||||
$resultSet = $this->query($sql, isset($options['bind'])?$options['bind']:[], !empty($options['fetch_sql']) ? true : false, !empty($options['master']) ? true : false, isset($options['fetch_mode']) ? $options['fetch_mode'] : true);
|
$resultSet = $this->query($sql, isset($options['bind']) ? $options['bind'] : [], !empty($options['fetch_sql']) ? true : false, !empty($options['master']) ? true : false, isset($options['fetch_mode']) ? $options['fetch_mode'] : true);
|
||||||
|
|
||||||
if (!empty($resultSet)) {
|
if (!empty($resultSet)) {
|
||||||
if (is_string($resultSet)) {
|
if (is_string($resultSet)) {
|
||||||
@@ -1969,7 +1970,7 @@ abstract class Driver
|
|||||||
$options = $this->_parseOptions();
|
$options = $this->_parseOptions();
|
||||||
$options['limit'] = 1;
|
$options['limit'] = 1;
|
||||||
$sql = $this->buildSelectSql($options);
|
$sql = $this->buildSelectSql($options);
|
||||||
$result = $this->query($sql, isset($options['bind'])?$options['bind']:[], !empty($options['fetch_sql']) ? true : false, !empty($options['master']) ? true : false, isset($options['fetch_mode']) ? $options['fetch_mode'] : true);
|
$result = $this->query($sql, isset($options['bind']) ? $options['bind'] : [], !empty($options['fetch_sql']) ? true : false, !empty($options['master']) ? true : false, isset($options['fetch_mode']) ? $options['fetch_mode'] : true);
|
||||||
|
|
||||||
// 数据处理
|
// 数据处理
|
||||||
if (!empty($result)) {
|
if (!empty($result)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user