From afa2c83c3c845b834e9523129e06c1b04daf5bbc Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sun, 4 Dec 2016 10:48:22 +1100 Subject: [PATCH] Fixes bug introduced by #2507 The many-to-many relationship types choke pretty hard on this enhancement, so only use it for the simple one-to-many/one-to-one style relations instead. Fixes #2524 --- modules/backend/formwidgets/Relation.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/backend/formwidgets/Relation.php b/modules/backend/formwidgets/Relation.php index 3dc4e4f9e..f59f309ce 100644 --- a/modules/backend/formwidgets/Relation.php +++ b/modules/backend/formwidgets/Relation.php @@ -139,9 +139,15 @@ class Relation extends FormWidgetBase $result = $query->getQuery()->get(); } + // Some simpler relations can specify a custom local or foreign "other" key, + // which can be detected and implemented here automagically. + $primaryKeyName = in_array($relationType, ['hasMany', 'belongsTo', 'hasOne']) + ? $relationObject->getOtherKey() + : $relationModel->getKeyName(); + $field->options = $usesTree - ? $result->listsNested($nameFrom, $relationObject->getOtherKey()) - : $result->lists($nameFrom, $relationObject->getOtherKey()); + ? $result->listsNested($nameFrom, $primaryKeyName) + : $result->lists($nameFrom, $primaryKeyName); return $field; });