This commit is contained in:
2021-02-24 14:22:56 +08:00
parent c704dc05eb
commit 19775e937e
7 changed files with 35 additions and 18 deletions
+7 -1
View File
@@ -114,7 +114,13 @@ abstract class AbstractCollection extends Component implements \IteratorAggregat
*/
public function getModel(): ActiveRecord
{
return objectPool($this->model);
$model = $this->model;;
if (is_object($model)) {
return $model;
}
return objectPool($model, function () use ($model) {
return new $model();
});
}
+5 -1
View File
@@ -907,8 +907,12 @@ abstract class BaseActiveRecord extends Component implements IOrm, ArrayAccess
*/
public static function populate(array $data): static
{
$className = get_called_class();
/** @var static $model */
$model = objectPool(get_called_class());
$model = objectPool($className, function () use ($className) {
return new $className();
});
$model->attributes = $data;
$model->setIsCreate(false);
return $model;
+7 -1
View File
@@ -56,7 +56,13 @@ class CollectionIterator extends \ArrayIterator
*/
protected function newModel($current): ActiveRecord
{
return objectPool($this->model)->setAttributes($current);
$model = $this->model;
if (is_object($model)) {
return $model->setAttributes($current);
}
return objectPool($model, function () use ($model) {
return new $model();
})->setAttributes($current);
}