修正JOIN方式一对一关联预载入闭包查询

This commit is contained in:
thinkphp
2017-02-20 17:43:15 +08:00
parent dcb46092d1
commit 46353f20a0

View File

@@ -67,6 +67,7 @@ abstract class OneToOne extends Relation
$field = true; $field = true;
} }
$query->field($field, false, $table, $alias); $query->field($field, false, $table, $alias);
$field = null;
} }
// 预载入封装 // 预载入封装
@@ -82,7 +83,7 @@ abstract class OneToOne extends Relation
if ($closure) { if ($closure) {
// 执行闭包查询 // 执行闭包查询
call_user_func_array($closure, [& $query]); call_user_func_array($closure, [ & $query]);
// 使用withField指定获取关联的字段 // 使用withField指定获取关联的字段
// $query->where(['id'=>1])->withField('id,name'); // $query->where(['id'=>1])->withField('id,name');
if ($query->getOptions('with_field')) { if ($query->getOptions('with_field')) {
@@ -91,10 +92,8 @@ abstract class OneToOne extends Relation
} }
} elseif (isset($this->option['field'])) { } elseif (isset($this->option['field'])) {
$field = $this->option['field']; $field = $this->option['field'];
} else {
$field = true;
} }
$query->field($field, false, $joinTable, $joinAlias, $relation . '__'); $query->field(isset($field) ? $field : true, false, $joinTable, $joinAlias, $relation . '__');
} }
/** /**
@@ -290,7 +289,7 @@ abstract class OneToOne extends Relation
{ {
// 预载入关联查询 支持嵌套预载入 // 预载入关联查询 支持嵌套预载入
if ($closure) { if ($closure) {
call_user_func_array($closure, [& $model]); call_user_func_array($closure, [ & $model]);
if ($field = $model->getOptions('with_field')) { if ($field = $model->getOptions('with_field')) {
$model->field($field)->removeOption('with_field'); $model->field($field)->removeOption('with_field');
} }