Skip to content

Commit 9c05349

Browse files
authored
Fix many-to-many embedCount() when multiple relations are eager loaded (#286)
2 parents a732d76 + fb87bde commit 9c05349

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

src/Phaseolies/Database/Entity/Builder.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1678,7 +1678,9 @@ protected function loadRelationCount(Collection $collection, string $relation, ?
16781678
$relationType = $firstModel->getLastRelationType();
16791679
$relatedModel = $firstModel->getLastRelatedModel();
16801680
$foreignKey = $firstModel->getLastForeignKey();
1681-
$localKey = $firstModel->getLastLocalKey();
1681+
$localKey = $relationType === "bindToMany"
1682+
? $firstModel->getKeyName()
1683+
: $firstModel->getLastLocalKey();
16821684

16831685
// Collect all local keys
16841686
$localKeys = array_map(fn($model) => $model->{$localKey}, $models);
@@ -1710,7 +1712,7 @@ protected function loadRelationCount(Collection $collection, string $relation, ?
17101712
// Set the count on each model
17111713
$countAttribute = $relation . '_count';
17121714
foreach ($models as $model) {
1713-
$key = $model->{$localKey};
1715+
$key = $model->getKey();
17141716
$model->{$countAttribute} = $counts[$key] ?? 0;
17151717
}
17161718
}
@@ -1738,7 +1740,6 @@ protected function loadManyToManyCount(Collection $collection, string $relation,
17381740
$foreignKey = $firstModel->getLastForeignKey();
17391741
$relatedKey = $firstModel->getLastRelatedKey();
17401742
$pivotTable = $firstModel->getLastPivotTable();
1741-
$localKey = $firstModel->getLastLocalKey();
17421743

17431744
$relatedModelInstance = new $relatedModel();
17441745
$relatedTable = $relatedModelInstance->getTable();
@@ -1768,7 +1769,7 @@ protected function loadManyToManyCount(Collection $collection, string $relation,
17681769
// Set the count on each model
17691770
$countAttribute = $relation . '_count';
17701771
foreach ($models as $model) {
1771-
$key = $model->{$localKey};
1772+
$key = $model->getKey();
17721773
$model->{$countAttribute} = $counts[$key] ?? 0;
17731774
}
17741775
}

0 commit comments

Comments
 (0)