mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 07:12:47 +08:00
修正hasMany关联的has方法
This commit is contained in:
@@ -45,7 +45,7 @@ class HasMany extends Relation
|
|||||||
public function getRelation($subRelation = '', $closure = null)
|
public function getRelation($subRelation = '', $closure = null)
|
||||||
{
|
{
|
||||||
if ($closure) {
|
if ($closure) {
|
||||||
call_user_func_array($closure, [& $this->query]);
|
call_user_func_array($closure, [ & $this->query]);
|
||||||
}
|
}
|
||||||
return $this->relation($subRelation)->select();
|
return $this->relation($subRelation)->select();
|
||||||
}
|
}
|
||||||
@@ -125,7 +125,7 @@ class HasMany extends Relation
|
|||||||
$count = 0;
|
$count = 0;
|
||||||
if (isset($result->$localKey)) {
|
if (isset($result->$localKey)) {
|
||||||
if ($closure) {
|
if ($closure) {
|
||||||
call_user_func_array($closure, [& $this->query]);
|
call_user_func_array($closure, [ & $this->query]);
|
||||||
}
|
}
|
||||||
$count = $this->query->where([$this->foreignKey => $result->$localKey])->count();
|
$count = $this->query->where([$this->foreignKey => $result->$localKey])->count();
|
||||||
}
|
}
|
||||||
@@ -141,14 +141,14 @@ class HasMany extends Relation
|
|||||||
public function getRelationCountQuery($closure)
|
public function getRelationCountQuery($closure)
|
||||||
{
|
{
|
||||||
if ($closure) {
|
if ($closure) {
|
||||||
call_user_func_array($closure, [& $this->query]);
|
call_user_func_array($closure, [ & $this->query]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->query->where([
|
return $this->query->where([
|
||||||
$this->foreignKey => [
|
$this->foreignKey => [
|
||||||
'exp',
|
'exp',
|
||||||
'=' . $this->parent->getTable() . '.' . $this->parent->getPk()
|
'=' . $this->parent->getTable() . '.' . $this->parent->getPk(),
|
||||||
]
|
],
|
||||||
])->fetchSql()->count();
|
])->fetchSql()->count();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@ class HasMany extends Relation
|
|||||||
$foreignKey = $this->foreignKey;
|
$foreignKey = $this->foreignKey;
|
||||||
// 预载入关联查询 支持嵌套预载入
|
// 预载入关联查询 支持嵌套预载入
|
||||||
if ($closure) {
|
if ($closure) {
|
||||||
call_user_func_array($closure, [& $model]);
|
call_user_func_array($closure, [ & $model]);
|
||||||
}
|
}
|
||||||
$list = $model->where($where)->with($subRelation)->select();
|
$list = $model->where($where)->with($subRelation)->select();
|
||||||
|
|
||||||
@@ -217,13 +217,14 @@ class HasMany extends Relation
|
|||||||
* @param string $operator 比较操作符
|
* @param string $operator 比较操作符
|
||||||
* @param integer $count 个数
|
* @param integer $count 个数
|
||||||
* @param string $id 关联表的统计字段
|
* @param string $id 关联表的统计字段
|
||||||
|
* @param string $joinType JOIN类型
|
||||||
* @return Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public function has($operator = '>=', $count = 1, $id = '*')
|
public function has($operator = '>=', $count = 1, $id = '*', $joinType = 'INNER')
|
||||||
{
|
{
|
||||||
$table = $this->query->getTable();
|
$table = $this->query->getTable();
|
||||||
return $this->parent->db()->alias('a')
|
return $this->parent->db()->alias('a')
|
||||||
->join($table . ' b', 'a.' . $this->localKey . '=b.' . $this->foreignKey, $this->joinType)
|
->join($table . ' b', 'a.' . $this->localKey . '=b.' . $this->foreignKey, $joinType)
|
||||||
->group('b.' . $this->foreignKey)
|
->group('b.' . $this->foreignKey)
|
||||||
->having('count(' . $id . ')' . $operator . $count);
|
->having('count(' . $id . ')' . $operator . $count);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user