提交 f106a715 编写于 作者: weixin_47267244's avatar weixin_47267244

修复 PolymorphicToOne、PolymorphicToMany

Signed-off-by: weixin_47267244's avatarYurun <admin@yurunsoft.com>
上级 f149b74e
......@@ -343,13 +343,13 @@ class ModelRelationManager
{
$query->field(...$subAnnotation->fields);
}
if ($annotation->withFields)
if ($subAnnotation->withFields)
{
$query->withField(...$annotation->withFields);
$query->withField(...$subAnnotation->withFields);
}
if (isset($withFields[$propertyName]))
{
$withFields[$propertyName]($query, $annotation);
$withFields[$propertyName]($query, $subAnnotation);
}
foreach ($query->select()->getArray() as $resultModel)
{
......@@ -364,6 +364,8 @@ class ModelRelationManager
{
foreach ($item['list'] as $subItem)
{
/** @var PolymorphicToMany $subAnnotation */
$subAnnotation = $subItem['annotation'];
$rightTable = $subItem['rightTable'];
$middleTable = $subItem['middleTable'];
$middleLeftField = $subItem['middleLeftField'];
......@@ -378,23 +380,23 @@ class ModelRelationManager
$query = $rightModel::query($modelClass::__getMeta()->getDbPoolName())
->field(...$queryFields)
->join($middleTable, $middleTable . '.' . $middleLeftField, '=', $rightTable . '.' . $rightField)
->where($middleTable . '.' . $annotation->type, '=', $annotation->typeValue)
->where($middleTable . '.' . $subAnnotation->type, '=', $subAnnotation->typeValue)
->where($middleTable . '.' . $middleRightField, 'in', $ids);
if ($annotation->withFields)
if ($subAnnotation->withFields)
{
$query->withField(...$annotation->withFields);
$query->withField(...$subAnnotation->withFields);
}
if ($annotation->order)
if ($subAnnotation->order)
{
$query->orderRaw($annotation->order);
$query->orderRaw($subAnnotation->order);
}
if (null !== $annotation->limit)
if (null !== $subAnnotation->limit)
{
$query->limit($annotation->limit);
$query->limit($subAnnotation->limit);
}
if (isset($withFields[$propertyName]))
{
$withFields[$propertyName]($query, $annotation);
$withFields[$propertyName]($query, $subAnnotation);
}
$list = $query->select()
->getArray();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册