Slight tweak/document Eloquent relationship ID loading

This commit is contained in:
Toby Zerner 2019-10-03 15:54:47 +09:30
parent ff9462face
commit 0bb094ba29
1 changed files with 8 additions and 5 deletions

View File

@ -202,16 +202,19 @@ class EloquentAdapter implements AdapterInterface
$property = $this->getRelationshipProperty($relationship);
$relation = $models[0]->$property();
if ($relation instanceof BelongsTo || $relation instanceof BelongsToMany) {
// If it's a belongs-to relationship, then the ID is stored on the model
// itself, so we don't need to load anything in advance.
if ($relation instanceof BelongsTo) {
return;
}
(new Collection($models))->loadMissing([
$property => function ($query) use ($relation) {
$query->select([
$relation->getRelated()->getKeyName(),
$relation->getForeignKeyName()
]);
$query->select($relation->getRelated()->getKeyName());
if (! $relation instanceof BelongsToMany) {
$query->addSelect($relation->getForeignKeyName());
}
}
]);
}