mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-06 23:02:48 +08:00
改进
This commit is contained in:
@@ -20,12 +20,6 @@ use JsonSerializable;
|
|||||||
class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSerializable
|
class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSerializable
|
||||||
{
|
{
|
||||||
protected $items = [];
|
protected $items = [];
|
||||||
// 显示属性
|
|
||||||
protected $visible = [];
|
|
||||||
// 隐藏属性
|
|
||||||
protected $hidden = [];
|
|
||||||
// 追加属性
|
|
||||||
protected $append = [];
|
|
||||||
|
|
||||||
public function __construct($items = [])
|
public function __construct($items = [])
|
||||||
{
|
{
|
||||||
@@ -46,63 +40,11 @@ class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSeria
|
|||||||
return empty($this->items);
|
return empty($this->items);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置需要隐藏的输出属性
|
|
||||||
* @access public
|
|
||||||
* @param array $hidden 属性列表
|
|
||||||
* @param bool $override 是否覆盖
|
|
||||||
* @return $this
|
|
||||||
*/
|
|
||||||
public function hidden($hidden = [], $override = false)
|
|
||||||
{
|
|
||||||
$this->hidden = [$hidden, $override];
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置需要输出的属性
|
|
||||||
* @param array $visible
|
|
||||||
* @param bool $override 是否覆盖
|
|
||||||
* @return $this
|
|
||||||
*/
|
|
||||||
public function visible($visible = [], $override = false)
|
|
||||||
{
|
|
||||||
$this->visible = [$visible, $override];
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置需要追加的输出属性
|
|
||||||
* @access public
|
|
||||||
* @param array $append 属性列表
|
|
||||||
* @param bool $override 是否覆盖
|
|
||||||
* @return $this
|
|
||||||
*/
|
|
||||||
public function append($append = [], $override = false)
|
|
||||||
{
|
|
||||||
$this->append = [$append, $override];
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toArray()
|
public function toArray()
|
||||||
{
|
{
|
||||||
$result = [];
|
return array_map(function ($value) {
|
||||||
foreach ($this->items as $key => $item) {
|
return ($value instanceof Model || $value instanceof self) ? $value->toArray() : $value;
|
||||||
if ($item instanceof Model || $item instanceof self) {
|
}, $this->items);
|
||||||
if (!empty($this->visible)) {
|
|
||||||
$item->visible($this->visible[0], $this->visible[1]);
|
|
||||||
} elseif (!empty($this->hidden)) {
|
|
||||||
$item->hidden($this->hidden[0], $this->hidden[1]);
|
|
||||||
}
|
|
||||||
if (!empty($this->append)) {
|
|
||||||
$item->append($this->append[0], $this->append[1]);
|
|
||||||
}
|
|
||||||
$result[$key] = $item->toArray();
|
|
||||||
} else {
|
|
||||||
$result[$key] = $item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function all()
|
public function all()
|
||||||
|
|||||||
@@ -593,8 +593,9 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
/**
|
/**
|
||||||
* 解析隐藏及显示属性
|
* 解析隐藏及显示属性
|
||||||
* @access protected
|
* @access protected
|
||||||
* @param array $attrs 属性
|
* @param array $attrs 属性
|
||||||
* @param array $result 结果集
|
* @param array $result 结果集
|
||||||
|
* @param bool $visible
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function parseAttr($attrs, &$result, $visible = true)
|
protected function parseAttr($attrs, &$result, $visible = true)
|
||||||
@@ -622,6 +623,10 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
/**
|
/**
|
||||||
* 转换子模型对象
|
* 转换子模型对象
|
||||||
* @access protected
|
* @access protected
|
||||||
|
* @param Model|Collection $model
|
||||||
|
* @param $visible
|
||||||
|
* @param $hidden
|
||||||
|
* @param $key
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function subToArray($model, $visible, $hidden, $key)
|
protected function subToArray($model, $visible, $hidden, $key)
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
namespace think\model;
|
namespace think\model;
|
||||||
|
|
||||||
use think\Collection as BaseCollection;
|
use think\Collection as BaseCollection;
|
||||||
|
use think\Model;
|
||||||
|
|
||||||
class Collection extends BaseCollection
|
class Collection extends BaseCollection
|
||||||
{
|
{
|
||||||
@@ -28,4 +29,51 @@ class Collection extends BaseCollection
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置需要隐藏的输出属性
|
||||||
|
* @access public
|
||||||
|
* @param array $hidden 属性列表
|
||||||
|
* @param bool $override 是否覆盖
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function hidden($hidden = [], $override = false)
|
||||||
|
{
|
||||||
|
$this->each(function ($model) use ($hidden, $override) {
|
||||||
|
/** @var Model $model */
|
||||||
|
$model->hidden($hidden, $override);
|
||||||
|
});
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置需要输出的属性
|
||||||
|
* @param array $visible
|
||||||
|
* @param bool $override 是否覆盖
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function visible($visible = [], $override = false)
|
||||||
|
{
|
||||||
|
$this->each(function ($model) use ($visible, $override) {
|
||||||
|
/** @var Model $model */
|
||||||
|
$model->visible($visible, $override);
|
||||||
|
});
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置需要追加的输出属性
|
||||||
|
* @access public
|
||||||
|
* @param array $append 属性列表
|
||||||
|
* @param bool $override 是否覆盖
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function append($append = [], $override = false)
|
||||||
|
{
|
||||||
|
$this->each(function ($model) use ($append, $override) {
|
||||||
|
/** @var Model $model */
|
||||||
|
$model->append($append, $override);
|
||||||
|
});
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user