fixed:修复CatchJoin无法连接同一个模型两次
This commit is contained in:
parent
9118e07d7b
commit
afe70d39b9
@ -13,7 +13,7 @@ class CatchQuery extends Query
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @time 2020年01月13日
|
* @time 2020年01月13日
|
||||||
* @param string $model
|
* @param mixed $model
|
||||||
* @param string $joinField
|
* @param string $joinField
|
||||||
* @param string $currentJoinField
|
* @param string $currentJoinField
|
||||||
* @param array $field
|
* @param array $field
|
||||||
@ -21,29 +21,38 @@ class CatchQuery extends Query
|
|||||||
* @param array $bind
|
* @param array $bind
|
||||||
* @return CatchQuery
|
* @return CatchQuery
|
||||||
*/
|
*/
|
||||||
public function catchJoin(string $model, string $joinField, string $currentJoinField, array $field = [], string $type = 'INNER', array $bind = []): CatchQuery
|
public function catchJoin($model, string $joinField, string $currentJoinField, array $field = [], string $type = 'INNER', array $bind = []): CatchQuery
|
||||||
{
|
{
|
||||||
$table = app($model)->getTable();
|
$tableAlias = null;
|
||||||
|
|
||||||
|
if (is_string($model)) {
|
||||||
|
$table = app($model)->getTable();
|
||||||
|
} else {
|
||||||
|
list($model, $tableAlias) = $model;
|
||||||
|
$table = app($model)->getTable();
|
||||||
|
}
|
||||||
|
|
||||||
// 合并字段
|
// 合并字段
|
||||||
$this->options['field'] = array_merge($this->options['field'] ?? [], array_map(function ($value) use ($table) {
|
$this->options['field'] = array_merge($this->options['field'] ?? [], array_map(function ($value) use ($table, $tableAlias) {
|
||||||
return $table . '.' . $value;
|
return ($tableAlias ? : $table) . '.' . $value;
|
||||||
}, $field));
|
}, $field));
|
||||||
|
|
||||||
return $this->join($table, sprintf('%s.%s=%s.%s', $table, $joinField, $this->getAlias(), $currentJoinField), $type, $bind);
|
return $this->join($tableAlias ? sprintf('%s %s', $table, $tableAlias) : $table
|
||||||
|
|
||||||
|
, sprintf('%s.%s=%s.%s', $tableAlias ? $tableAlias : $table, $joinField, $this->getAlias(), $currentJoinField), $type, $bind);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @time 2020年01月13日
|
* @time 2020年01月13日
|
||||||
* @param string $model
|
* @param mixed $model
|
||||||
* @param string $joinField
|
* @param string $joinField
|
||||||
* @param string $currentJoinField
|
* @param string $currentJoinField
|
||||||
* @param array $field
|
* @param array $field
|
||||||
* @param array $bind
|
* @param array $bind
|
||||||
* @return CatchQuery
|
* @return CatchQuery
|
||||||
*/
|
*/
|
||||||
public function catchLeftJoin(string $model, string $joinField, string $currentJoinField, array $field = [], array $bind = []): CatchQuery
|
public function catchLeftJoin($model, string $joinField, string $currentJoinField, array $field = [], array $bind = []): CatchQuery
|
||||||
{
|
{
|
||||||
return $this->catchJoin($model, $joinField, $currentJoinField, $field,'LEFT', $bind);
|
return $this->catchJoin($model, $joinField, $currentJoinField, $field,'LEFT', $bind);
|
||||||
}
|
}
|
||||||
@ -51,14 +60,14 @@ class CatchQuery extends Query
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @time 2020年01月13日
|
* @time 2020年01月13日
|
||||||
* @param string $model
|
* @param mixed $model
|
||||||
* @param string $joinField
|
* @param string $joinField
|
||||||
* @param string $currentJoinField
|
* @param string $currentJoinField
|
||||||
* @param array $field
|
* @param array $field
|
||||||
* @param array $bind
|
* @param array $bind
|
||||||
* @return CatchQuery
|
* @return CatchQuery
|
||||||
*/
|
*/
|
||||||
public function catchRightJoin(string $model, string $joinField, string $currentJoinField, array $field = [], array $bind = []): CatchQuery
|
public function catchRightJoin($model, string $joinField, string $currentJoinField, array $field = [], array $bind = []): CatchQuery
|
||||||
{
|
{
|
||||||
return $this->catchJoin($model, $joinField, $currentJoinField, $field,'RIGHT', $bind);
|
return $this->catchJoin($model, $joinField, $currentJoinField, $field,'RIGHT', $bind);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user