hasOne关联的has方法改进

This commit is contained in:
thinkphp
2017-09-07 11:26:46 +08:00
parent 50e834c5b5
commit 6bab32b1ea

View File

@@ -67,11 +67,14 @@ class HasOne extends OneToOne
public function has() public function has()
{ {
$table = $this->query->getTable(); $table = $this->query->getTable();
$model = basename(str_replace('\\', '/', get_class($this->parent)));
$relation = basename(str_replace('\\', '/', $this->model));
$localKey = $this->localKey; $localKey = $this->localKey;
$foreignKey = $this->foreignKey; $foreignKey = $this->foreignKey;
return $this->parent->db()->alias('a') return $this->parent->db()
->whereExists(function ($query) use ($table, $localKey, $foreignKey) { ->alias($model)
$query->table([$table => 'b'])->field('b.' . $foreignKey)->whereExp('a.' . $localKey, '=b.' . $foreignKey); ->whereExists(function ($query) use ($table, $model, $relation, $localKey, $foreignKey) {
$query->table([$table => $relation])->field($relation . '.' . $foreignKey)->whereExp($model . '.' . $localKey, '=' . $relatoin . '.' . $foreignKey);
}); });
} }