关联模型D函数替代

This commit is contained in:
thinkphp
2016-01-30 11:24:05 +08:00
parent 4e2621e0c8
commit 107956f7a4

View File

@@ -148,7 +148,7 @@ trait Relation
$mappingFk = !empty($val['foreign_key']) ? $val['foreign_key'] : strtolower($this->name) . '_id'; // 关联外键 $mappingFk = !empty($val['foreign_key']) ? $val['foreign_key'] : strtolower($this->name) . '_id'; // 关联外键
} }
// 获取关联模型对象 // 获取关联模型对象
$model = D($mappingClass); $model = \think\Loader::model($mappingClass);
switch ($mappingType) { switch ($mappingType) {
case HAS_ONE: case HAS_ONE:
$pk = $result[$mappingKey]; $pk = $result[$mappingKey];
@@ -262,7 +262,7 @@ trait Relation
$mappingCondition[$mappingFk] = $pk; $mappingCondition[$mappingFk] = $pk;
} }
// 获取关联model对象 // 获取关联model对象
$model = D($mappingClass); $model = \think\Loader::model($mappingClass);
$mappingData = isset($data[$mappingName]) ? $data[$mappingName] : false; $mappingData = isset($data[$mappingName]) ? $data[$mappingName] : false;
if (!empty($mappingData) || 'DEL' == $opType) { if (!empty($mappingData) || 'DEL' == $opType) {
switch ($mappingType) { switch ($mappingType) {
@@ -370,7 +370,7 @@ trait Relation
{ {
if (empty($data) && !empty($this->data)) { if (empty($data) && !empty($this->data)) {
$data = $this->data; $data = $this->data;
} elseif(!is_array($data)) { } elseif (!is_array($data)) {
// 数据无效返回 // 数据无效返回
return false; return false;
} }
@@ -379,22 +379,22 @@ trait Relation
// 遍历关联定义 // 遍历关联定义
foreach ($this->_link as $key => $val) { foreach ($this->_link as $key => $val) {
// 操作制定关联类型 // 操作制定关联类型
$mappingName = !empty($val['mapping_name']) ? $val['mapping_name'] : $key; // 映射名称 $mappingName = !empty($val['mapping_name']) ? $val['mapping_name'] : $key; // 映射名称
if (empty($name) || true === $name || $mappingName == $name || (is_array($name) && in_array($mappingName,$name)) ) { if (empty($name) || true === $name || $mappingName == $name || (is_array($name) && in_array($mappingName, $name))) {
// 操作制定的关联 // 操作制定的关联
$mappingType = !empty($val['mapping_type']) ? $val['mapping_type'] : $val; // 关联类型 $mappingType = !empty($val['mapping_type']) ? $val['mapping_type'] : $val; // 关联类型
$mappingClass = !empty($val['class_name']) ? $val['class_name'] : $key; // 关联类名 $mappingClass = !empty($val['class_name']) ? $val['class_name'] : $key; // 关联类名
$mappingKey =!empty($val['mapping_key']) ? $val['mapping_key'] : $this->getPk(); // 关联键名 $mappingKey = !empty($val['mapping_key']) ? $val['mapping_key'] : $this->getPk(); // 关联键名
if (strtoupper($mappingClass) == strtoupper($this->name) || !isset($data[$mappingName])) { if (strtoupper($mappingClass) == strtoupper($this->name) || !isset($data[$mappingName])) {
continue; // 自引用关联或提交关联数据跳过 continue; // 自引用关联或提交关联数据跳过
} }
// 获取关联model对象 // 获取关联model对象
$model = D($mappingClass); $model = \think\Loader::model($mappingClass);
$_data = $data[$mappingName]; $_data = $data[$mappingName];
unset($data[$key]); unset($data[$key]);
if ($_data = $model->token(false)->create($_data)) { if ($_data = $model->token(false)->create($_data)) {
$data[$mappingName] = $_data; $data[$mappingName] = $_data;
$fields[] = $mappingName; $fields[] = $mappingName;
} else { } else {
$error = $model->getError(); $error = $model->getError();
if ($this->patchValidate) { if ($this->patchValidate) {