改进Model类的 关联外键规则

This commit is contained in:
thinkphp
2016-04-06 11:17:48 +08:00
parent 22d63bc6e3
commit 644adf60be

View File

@@ -12,6 +12,7 @@
namespace think; namespace think;
use think\Cache; use think\Cache;
use think\Loader;
abstract class Model implements \JsonSerializable, \ArrayAccess abstract class Model implements \JsonSerializable, \ArrayAccess
{ {
@@ -350,7 +351,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
'msg' => $msg, 'msg' => $msg,
]; ];
} else { } else {
$this->validate = true === $rule ? strtolower($this->name) : $rule; $this->validate = true === $rule ? $this->name : $rule;
} }
return $this; return $this;
} }
@@ -574,7 +575,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
if (false === strpos($model, '\\')) { if (false === strpos($model, '\\')) {
$path = explode('\\', get_called_class()); $path = explode('\\', get_called_class());
array_pop($path); array_pop($path);
array_push($path, $model); array_push($path, Loader::parseName($model, 1));
$model = implode('\\', $path); $model = implode('\\', $path);
} }
return $model; return $model;
@@ -585,7 +586,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
{ {
$model = $this->parseModel($model); $model = $this->parseModel($model);
$localKey = $localKey ?: $this->pk; $localKey = $localKey ?: $this->pk;
$foreignKey = $foreignKey ?: strtolower($this->name) . '_id'; $foreignKey = $foreignKey ?: Loader::parseName($this->name) . '_id';
$this->relation = self::HAS_ONE; $this->relation = self::HAS_ONE;
return $model::where($foreignKey, $this->data[$localKey]); return $model::where($foreignKey, $this->data[$localKey]);
} }
@@ -595,7 +596,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
{ {
$model = $this->parseModel($model); $model = $this->parseModel($model);
$foreignKey = $foreignKey ?: $this->pk; $foreignKey = $foreignKey ?: $this->pk;
$localKey = $localKey ?: strtolower(basename(str_replace('\\', '/', $model))) . '_id'; $localKey = $localKey ?: Loader::parseName(basename(str_replace('\\', '/', $model))) . '_id';
$this->relation = self::BELONGS_TO; $this->relation = self::BELONGS_TO;
return $model::where($foreignKey, $this->data[$localKey]); return $model::where($foreignKey, $this->data[$localKey]);
} }
@@ -605,7 +606,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
{ {
$model = $this->parseModel($model); $model = $this->parseModel($model);
$localKey = $localKey ?: $this->pk; $localKey = $localKey ?: $this->pk;
$foreignKey = $foreignKey ?: strtolower($this->name) . '_id'; $foreignKey = $foreignKey ?: Loader::parseName($this->name) . '_id';
$this->relation = self::HAS_MANY; $this->relation = self::HAS_MANY;
return $model::where($foreignKey, $this->data[$localKey]); return $model::where($foreignKey, $this->data[$localKey]);
} }
@@ -615,7 +616,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
{ {
$model = $this->parseModel($model); $model = $this->parseModel($model);
$foreignKey = $foreignKey ?: $this->pk; $foreignKey = $foreignKey ?: $this->pk;
$localKey = $localKey ?: strtolower(basename(str_replace('\\', '/', $model))) . '_id'; $localKey = $localKey ?: Loader::parseName(basename(str_replace('\\', '/', $model))) . '_id';
$this->relation = self::BELONGS_TO_MANY; $this->relation = self::BELONGS_TO_MANY;
return $model::where($foreignKey, $this->data[$localKey]); return $model::where($foreignKey, $this->data[$localKey]);
} }