模型增加replace方法

MorphOne 增加 make 方法创建关联对象实例
This commit is contained in:
yunwuxin
2018-12-04 17:45:59 +08:00
parent cca9d245ad
commit e7ccad7bac
2 changed files with 33 additions and 8 deletions

View File

@@ -53,7 +53,7 @@ class MorphOne extends Relation
public function getRelation($subRelation = '', $closure = null)
{
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
call_user_func_array($closure, [& $this->query]);
}
$relationModel = $this->relation($subRelation)->find();
@@ -81,8 +81,8 @@ class MorphOne extends Relation
/**
* 根据关联条件查询当前模型
* @access public
* @param mixed $where 查询条件(数组或者闭包)
* @param mixed $fields 字段
* @param mixed $where 查询条件(数组或者闭包)
* @param mixed $fields 字段
* @return Query
*/
public function hasWhere($where = [], $fields = null)
@@ -179,7 +179,7 @@ class MorphOne extends Relation
{
// 预载入关联查询 支持嵌套预载入
if ($closure) {
call_user_func_array($closure, [ & $this]);
call_user_func_array($closure, [& $this]);
}
$list = $this->query->where($where)->with($subRelation)->find();
$morphKey = $this->morphKey;
@@ -198,6 +198,17 @@ class MorphOne extends Relation
* @return Model|false
*/
public function save($data)
{
$model = $this->make($data);
return $model->save() ? $model : false;
}
/**
* 创建关联对象实例
* @param array $data
* @return mixed
*/
public function make($data = [])
{
if ($data instanceof Model) {
$data = $data->getData();
@@ -205,10 +216,10 @@ class MorphOne extends Relation
// 保存关联表数据
$pk = $this->parent->getPk();
$model = new $this->model;
$data[$this->morphKey] = $this->parent->$pk;
$data[$this->morphType] = $this->type;
return $model->save($data) ? $model : false;
return new $this->model($data);
}
/**