diff --git a/src/Database/Eloquent/Relations/BelongsTo.php b/src/Database/Eloquent/Relations/BelongsTo.php index 17acccc..8b66b4e 100755 --- a/src/Database/Eloquent/Relations/BelongsTo.php +++ b/src/Database/Eloquent/Relations/BelongsTo.php @@ -2,6 +2,7 @@ namespace Awobaz\Compoships\Database\Eloquent\Relations; +use BackedEnum; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; @@ -233,7 +234,12 @@ public function match(array $models, Collection $results, $relation) foreach ($results as $result) { if (is_array($owner)) { //Check for multi-columns relationship $dictKeyValues = array_map(function ($k) use ($result) { - return $result->{$k}; + // TODO: test + if ($result->{$k} instanceof BackedEnum) { + return $result->{$k}->value; + } else { + return $result->{$k}; + } }, $owner); $dictionary[implode('-', $dictKeyValues)] = $result; @@ -248,7 +254,12 @@ public function match(array $models, Collection $results, $relation) foreach ($models as $model) { if (is_array($foreign)) { //Check for multi-columns relationship $dictKeyValues = array_map(function ($k) use ($model) { - return $model->{$k}; + // TODO: test + if ($model->{$k} instanceof BackedEnum) { + return $model->{$k}->value; + } else { + return $model->{$k}; + } }, $foreign); $key = implode('-', $dictKeyValues); diff --git a/src/Database/Eloquent/Relations/HasOneOrMany.php b/src/Database/Eloquent/Relations/HasOneOrMany.php index 6040ee9..403a911 100755 --- a/src/Database/Eloquent/Relations/HasOneOrMany.php +++ b/src/Database/Eloquent/Relations/HasOneOrMany.php @@ -2,6 +2,7 @@ namespace Awobaz\Compoships\Database\Eloquent\Relations; +use BackedEnum; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; @@ -231,7 +232,12 @@ protected function buildDictionary(Collection $results) //If the foreign key is an array, we know it's a multi-column relationship... if (is_array($foreign)) { $dictKeyValues = array_map(function ($k) use ($result) { - return $result->{$k}; + // TODO: test + if ($result->{$k} instanceof BackedEnum) { + return $result->{$k}->value; + } else { + return $result->{$k}; + } }, $foreign); //... so we join the values to construct the dictionary key $dictionary[implode('-', $dictKeyValues)][] = $result;