mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-06 23:02:48 +08:00
Model类增加resultSetType属性 用于指定模型查询的数据集对象(默认为空返回数组) Db类查询不再支持设置自定义数据集对象(只能使用数组或者think\Collection)
This commit is contained in:
@@ -111,6 +111,8 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
protected $useGlobalScope = true;
|
protected $useGlobalScope = true;
|
||||||
// 是否采用批量验证
|
// 是否采用批量验证
|
||||||
protected $batchValidate = false;
|
protected $batchValidate = false;
|
||||||
|
// 查询数据集对象
|
||||||
|
protected $resultSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化过的模型.
|
* 初始化过的模型.
|
||||||
@@ -574,7 +576,15 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
*/
|
*/
|
||||||
public function toCollection($collection)
|
public function toCollection($collection)
|
||||||
{
|
{
|
||||||
return new Collection($collection);
|
if ($this->resultSetType) {
|
||||||
|
if ('collection' == $this->resultSetType) {
|
||||||
|
$collection = new Collection($collection);
|
||||||
|
} else {
|
||||||
|
$class = $this->resultSetType;
|
||||||
|
$collection = new $class($collection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $collection;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -489,10 +489,7 @@ abstract class Connection
|
|||||||
$result = $this->PDOStatement->fetchAll($this->fetchType);
|
$result = $this->PDOStatement->fetchAll($this->fetchType);
|
||||||
$this->numRows = count($result);
|
$this->numRows = count($result);
|
||||||
|
|
||||||
if (!empty($class)) {
|
if ('collection' == $this->resultSetType) {
|
||||||
// 返回指定数据集对象类
|
|
||||||
$result = new $class($result);
|
|
||||||
} elseif ('collection' == $this->resultSetType) {
|
|
||||||
// 返回数据集Collection对象
|
// 返回数据集Collection对象
|
||||||
$result = new Collection($result);
|
$result = new Collection($result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1318,18 +1318,6 @@ class Query
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 指定数据集返回对象
|
|
||||||
* @access public
|
|
||||||
* @param string $class 指定返回的数据集对象类名
|
|
||||||
* @return $this
|
|
||||||
*/
|
|
||||||
public function fetchClass($class)
|
|
||||||
{
|
|
||||||
$this->options['fetch_class'] = $class;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置从主服务器读取数据
|
* 设置从主服务器读取数据
|
||||||
* @access public
|
* @access public
|
||||||
@@ -1967,12 +1955,11 @@ class Query
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 返回结果处理
|
// 数据列表读取后的处理
|
||||||
if (count($resultSet) > 0) {
|
if (!empty($this->model)) {
|
||||||
// 数据列表读取后的处理
|
// 生成模型对象
|
||||||
if (!empty($this->model)) {
|
$model = $this->model;
|
||||||
// 生成模型对象
|
if (count($resultSet) > 0) {
|
||||||
$model = $this->model;
|
|
||||||
foreach ($resultSet as $key => $result) {
|
foreach ($resultSet as $key => $result) {
|
||||||
/** @var Model $result */
|
/** @var Model $result */
|
||||||
$result = new $model($result);
|
$result = new $model($result);
|
||||||
@@ -1983,12 +1970,16 @@ class Query
|
|||||||
}
|
}
|
||||||
$resultSet[$key] = $result;
|
$resultSet[$key] = $result;
|
||||||
}
|
}
|
||||||
if (!empty($options['with']) && $result instanceof Model) {
|
if (!empty($options['with'])) {
|
||||||
// 预载入
|
// 预载入
|
||||||
$result->eagerlyResultSet($resultSet, $options['with'], is_object($resultSet) ? get_class($resultSet) : '');
|
$result->eagerlyResultSet($resultSet, $options['with'], is_object($resultSet) ? get_class($resultSet) : '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif (!empty($options['fail'])) {
|
// 模型数据集转换
|
||||||
|
$resultSet = (new $model)->toCollection($resultSet);
|
||||||
|
}
|
||||||
|
// 返回结果处理
|
||||||
|
if (!empty($options['fail']) && count($resultSet) == 0) {
|
||||||
$this->throwNotFound($options);
|
$this->throwNotFound($options);
|
||||||
}
|
}
|
||||||
return $resultSet;
|
return $resultSet;
|
||||||
|
|||||||
Reference in New Issue
Block a user