mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-05 22:52:49 +08:00
改进Model类
This commit is contained in:
@@ -1377,6 +1377,20 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取模型的默认外键名
|
||||||
|
* @access public
|
||||||
|
* @param string $name 模型名
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function getForeignKey($name)
|
||||||
|
{
|
||||||
|
if (strpos($name, '\\')) {
|
||||||
|
$name = basename(str_replace('\\', '/', $model));
|
||||||
|
}
|
||||||
|
return Loader::parseName($name) . '_id';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HAS ONE 关联定义
|
* HAS ONE 关联定义
|
||||||
* @access public
|
* @access public
|
||||||
@@ -1392,7 +1406,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
// 记录当前关联信息
|
// 记录当前关联信息
|
||||||
$model = $this->parseModel($model);
|
$model = $this->parseModel($model);
|
||||||
$localKey = $localKey ?: $this->getPk();
|
$localKey = $localKey ?: $this->getPk();
|
||||||
$foreignKey = $foreignKey ?: Loader::parseName($this->name) . '_id';
|
$foreignKey = $foreignKey ?: $this->getForeignKey($this->name);
|
||||||
return new HasOne($this, $model, $foreignKey, $localKey, $joinType);
|
return new HasOne($this, $model, $foreignKey, $localKey, $joinType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1410,7 +1424,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
{
|
{
|
||||||
// 记录当前关联信息
|
// 记录当前关联信息
|
||||||
$model = $this->parseModel($model);
|
$model = $this->parseModel($model);
|
||||||
$foreignKey = $foreignKey ?: Loader::parseName(basename(str_replace('\\', '/', $model))) . '_id';
|
$foreignKey = $foreignKey ?: $this->getForeignKey($model);
|
||||||
$otherKey = $otherKey ?: (new $model)->getPk();
|
$otherKey = $otherKey ?: (new $model)->getPk();
|
||||||
return new BelongsTo($this, $model, $foreignKey, $otherKey, $joinType);
|
return new BelongsTo($this, $model, $foreignKey, $otherKey, $joinType);
|
||||||
}
|
}
|
||||||
@@ -1428,7 +1442,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
// 记录当前关联信息
|
// 记录当前关联信息
|
||||||
$model = $this->parseModel($model);
|
$model = $this->parseModel($model);
|
||||||
$localKey = $localKey ?: $this->getPk();
|
$localKey = $localKey ?: $this->getPk();
|
||||||
$foreignKey = $foreignKey ?: Loader::parseName($this->name) . '_id';
|
$foreignKey = $foreignKey ?: $this->getForeignKey($this->name);
|
||||||
return new HasMany($this, $model, $foreignKey, $localKey);
|
return new HasMany($this, $model, $foreignKey, $localKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1448,9 +1462,8 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
$model = $this->parseModel($model);
|
$model = $this->parseModel($model);
|
||||||
$through = $this->parseModel($through);
|
$through = $this->parseModel($through);
|
||||||
$localKey = $localKey ?: $this->getPk();
|
$localKey = $localKey ?: $this->getPk();
|
||||||
$foreignKey = $foreignKey ?: Loader::parseName($this->name) . '_id';
|
$foreignKey = $foreignKey ?: $this->getForeignKey($this->name);
|
||||||
$name = Loader::parseName(basename(str_replace('\\', '/', $through)));
|
$throughKey = $throughKey ?: $this->getForeignKey($through);
|
||||||
$throughKey = $throughKey ?: $name . '_id';
|
|
||||||
return new HasManyThrough($this, $model, $through, $foreignKey, $throughKey, $localKey);
|
return new HasManyThrough($this, $model, $through, $foreignKey, $throughKey, $localKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1470,7 +1483,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
$name = Loader::parseName(basename(str_replace('\\', '/', $model)));
|
$name = Loader::parseName(basename(str_replace('\\', '/', $model)));
|
||||||
$table = $table ?: $this->db(false)->getTable(Loader::parseName($this->name) . '_' . $name);
|
$table = $table ?: $this->db(false)->getTable(Loader::parseName($this->name) . '_' . $name);
|
||||||
$foreignKey = $foreignKey ?: $name . '_id';
|
$foreignKey = $foreignKey ?: $name . '_id';
|
||||||
$localKey = $localKey ?: Loader::parseName($this->name) . '_id';
|
$localKey = $localKey ?: $this->getForeignKey($this->name);
|
||||||
return new BelongsToMany($this, $model, $table, $foreignKey, $localKey);
|
return new BelongsToMany($this, $model, $table, $foreignKey, $localKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user