Skip to content

Commit c4f8bfc

Browse files
kylekatarnlsMikk Mihkel Nurges
authored andcommitted
Fix duplicate table name keeping the segmentation working on foreign key (#177)
1 parent 739a01a commit c4f8bfc

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/Rebing/GraphQL/Support/SelectFields.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,7 @@ protected static function handleFields(array $requestedFields, $parentType, arra
176176
$foreignKey = $relation->getQualifiedForeignKeyName();
177177
}
178178

179-
$segments = explode('.', $foreignKey);
180-
$foreignKey = end($segments);
181-
$foreignKey = $parentTable ? ($parentTable . '.' . $foreignKey) : $foreignKey;
179+
$foreignKey = $parentTable ? ($parentTable . '.' . preg_replace('/^' . preg_quote($parentTable) . '\./', '', $foreignKey)) : $foreignKey;
182180

183181
if(is_a($relation, MorphTo::class))
184182
{
@@ -206,7 +204,12 @@ protected static function handleFields(array $requestedFields, $parentType, arra
206204
elseif((is_a($relation, HasMany::class) || is_a($relation, MorphMany::class) || is_a($relation, HasOne::class))
207205
&& !array_key_exists($foreignKey, $field))
208206
{
209-
$field[$foreignKey] = self::FOREIGN_KEY;
207+
$segments = explode('.', $foreignKey);
208+
$foreignKey = end($segments);
209+
if( ! array_key_exists($foreignKey, $field))
210+
{
211+
$field[$foreignKey] = self::FOREIGN_KEY;
212+
}
210213
}
211214

212215
// New parent type, which is the relation

0 commit comments

Comments
 (0)