mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-01 12:42:48 +08:00
Model类增加setRelation方法和setAttr方法区分
This commit is contained in:
@@ -56,8 +56,6 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
||||
protected $pk;
|
||||
// 数据表字段信息 留空则自动获取
|
||||
protected $field = [];
|
||||
// 关联属性
|
||||
protected $relationAttr = [];
|
||||
// 只读字段
|
||||
protected $readonly = [];
|
||||
// 显示属性
|
||||
@@ -349,20 +347,23 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
||||
// 类型转换
|
||||
$value = $this->writeTransform($value, $this->type[$name]);
|
||||
}
|
||||
|
||||
if ($this->isRelationAttr($name)) {
|
||||
$isRelationData = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 设置数据对象属性
|
||||
if (isset($isRelationData)) {
|
||||
$this->relation[$name] = $value;
|
||||
} else {
|
||||
$this->data[$name] = $value;
|
||||
}
|
||||
$this->data[$name] = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置关联数据对象值
|
||||
* @access public
|
||||
* @param string $name 属性名
|
||||
* @param mixed $value 属性值
|
||||
* @return $this
|
||||
*/
|
||||
public function setRelation($name, $value)
|
||||
{
|
||||
$this->relation[$name] = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -519,8 +520,8 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
||||
$value = $this->formatDateTime($value, $this->dateFormat);
|
||||
}
|
||||
} elseif ($notFound) {
|
||||
$relation = $this->isRelationAttr($name);
|
||||
if ($relation) {
|
||||
$relation = Loader::parseName($name, 1, false);
|
||||
if (method_exists($this, $relation)) {
|
||||
$modelRelation = $this->$relation();
|
||||
// 不存在该字段 获取关联数据
|
||||
$value = $this->getRelationData($modelRelation);
|
||||
@@ -1075,24 +1076,6 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查属性是否为关联属性 如果是则返回关联方法名
|
||||
* @access public
|
||||
* @param string $attr 关联属性名
|
||||
* @return string|false
|
||||
*/
|
||||
protected function isRelationAttr($attr)
|
||||
{
|
||||
$relation = Loader::parseName($attr, 1, false);
|
||||
|
||||
if (!empty($this->relationAttr) && in_array($attr, $this->relationAttr)) {
|
||||
return $relation;
|
||||
} elseif (method_exists($this, $relation)) {
|
||||
return $relation;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存多个数据到当前数据对象
|
||||
* @access public
|
||||
|
||||
@@ -148,7 +148,7 @@ class BelongsTo extends OneToOne
|
||||
$this->bindAttr($relationModel, $result, $this->bindAttr);
|
||||
}
|
||||
// 设置关联属性
|
||||
$result->setAttr($attr, $relationModel);
|
||||
$result->setRelation($attr, $relationModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -180,7 +180,7 @@ class BelongsTo extends OneToOne
|
||||
$this->bindAttr($relationModel, $result, $this->bindAttr);
|
||||
}
|
||||
// 设置关联属性
|
||||
$result->setAttr(Loader::parseName($relation), $relationModel);
|
||||
$result->setRelation(Loader::parseName($relation), $relationModel);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -197,7 +197,7 @@ class BelongsTo extends OneToOne
|
||||
$this->parent->setAttr($foreignKey, $model->$pk);
|
||||
$this->parent->save();
|
||||
|
||||
return $this->parent->setAttr($this->relation, $model);
|
||||
return $this->parent->setRelation($this->relation, $model);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -212,6 +212,6 @@ class BelongsTo extends OneToOne
|
||||
$this->parent->setAttr($foreignKey, null);
|
||||
$this->parent->save();
|
||||
|
||||
return $this->parent->setAttr($this->relation, null);
|
||||
return $this->parent->setRelation($this->relation, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -267,7 +267,7 @@ class BelongsToMany extends Relation
|
||||
$data[$result->$pk] = [];
|
||||
}
|
||||
|
||||
$result->setAttr($attr, $this->resultSetBuild($data[$result->$pk]));
|
||||
$result->setRelation($attr, $this->resultSetBuild($data[$result->$pk]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -293,7 +293,7 @@ class BelongsToMany extends Relation
|
||||
if (!isset($data[$pk])) {
|
||||
$data[$pk] = [];
|
||||
}
|
||||
$result->setAttr(Loader::parseName($relation), $this->resultSetBuild($data[$pk]));
|
||||
$result->setRelation(Loader::parseName($relation), $this->resultSetBuild($data[$pk]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ class HasMany extends Relation
|
||||
$relationModel->setParent(clone $result);
|
||||
}
|
||||
|
||||
$result->setAttr($attr, $this->resultSetBuild($data[$result->$localKey]));
|
||||
$result->setRelation($attr, $this->resultSetBuild($data[$result->$localKey]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -124,7 +124,7 @@ class HasMany extends Relation
|
||||
$relationModel->setParent(clone $result);
|
||||
}
|
||||
|
||||
$result->setAttr(Loader::parseName($relation), $this->resultSetBuild($data[$result->$localKey]));
|
||||
$result->setRelation(Loader::parseName($relation), $this->resultSetBuild($data[$result->$localKey]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ class HasOne extends OneToOne
|
||||
}
|
||||
}
|
||||
// 设置关联属性
|
||||
$result->setAttr($attr, $relationModel);
|
||||
$result->setRelation($attr, $relationModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -179,7 +179,7 @@ class HasOne extends OneToOne
|
||||
}
|
||||
}
|
||||
|
||||
$result->setAttr(Loader::parseName($relation), $relationModel);
|
||||
$result->setRelation(Loader::parseName($relation), $relationModel);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ class MorphMany extends Relation
|
||||
$relationModel->setParent(clone $result);
|
||||
$relationModel->isUpdate(true);
|
||||
}
|
||||
$result->setAttr($attr, $this->resultSetBuild($data[$result->$pk]));
|
||||
$result->setRelation($attr, $this->resultSetBuild($data[$result->$pk]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -161,7 +161,7 @@ class MorphMany extends Relation
|
||||
$relationModel->isUpdate(true);
|
||||
}
|
||||
|
||||
$result->setAttr(Loader::parseName($relation), $this->resultSetBuild($data[$result->$pk]));
|
||||
$result->setRelation(Loader::parseName($relation), $this->resultSetBuild($data[$result->$pk]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ class MorphOne extends Relation
|
||||
$relationModel->isUpdate(true);
|
||||
}
|
||||
|
||||
$result->setAttr($attr, $relationModel);
|
||||
$result->setRelation($attr, $relationModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -161,7 +161,7 @@ class MorphOne extends Relation
|
||||
$relationModel = null;
|
||||
}
|
||||
|
||||
$result->setAttr(Loader::parseName($relation), $relationModel);
|
||||
$result->setRelation(Loader::parseName($relation), $relationModel);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@ class MorphTo extends Relation
|
||||
$relationModel->setParent(clone $result);
|
||||
$relationModel->isUpdate(true);
|
||||
|
||||
$result->setAttr($attr, $relationModel);
|
||||
$result->setRelation($attr, $relationModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -232,7 +232,7 @@ class MorphTo extends Relation
|
||||
$data->setParent(clone $result);
|
||||
$data->isUpdate(true);
|
||||
}
|
||||
$result->setAttr(Loader::parseName($relation), $data ?: null);
|
||||
$result->setRelation(Loader::parseName($relation), $data ?: null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -251,7 +251,7 @@ class MorphTo extends Relation
|
||||
$this->parent->setAttr($morphType, get_class($model));
|
||||
$this->parent->save();
|
||||
|
||||
return $this->parent->setAttr($this->relation, $model);
|
||||
return $this->parent->setRelation($this->relation, $model);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -268,7 +268,7 @@ class MorphTo extends Relation
|
||||
$this->parent->setAttr($morphType, null);
|
||||
$this->parent->save();
|
||||
|
||||
return $this->parent->setAttr($this->relation, null);
|
||||
return $this->parent->setRelation($this->relation, null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -277,6 +277,5 @@ class MorphTo extends Relation
|
||||
* @return void
|
||||
*/
|
||||
protected function baseQuery()
|
||||
{
|
||||
}
|
||||
{}
|
||||
}
|
||||
|
||||
@@ -257,7 +257,7 @@ abstract class OneToOne extends Relation
|
||||
} else {
|
||||
$relationModel = null;
|
||||
}
|
||||
$result->setAttr(Loader::parseName($relation), $relationModel);
|
||||
$result->setRelation(Loader::parseName($relation), $relationModel);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -317,6 +317,5 @@ abstract class OneToOne extends Relation
|
||||
* @return void
|
||||
*/
|
||||
protected function baseQuery()
|
||||
{
|
||||
}
|
||||
{}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user