From f6ba29a25940d085ee4e22d2f6955b46070a1545 Mon Sep 17 00:00:00 2001 From: bruce2409 Date: Mon, 21 Mar 2022 14:02:43 +0000 Subject: [PATCH] Added belongsTo functionality for Eloquent models --- src/Bridges/Laravel/HasEloquentRelations.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Bridges/Laravel/HasEloquentRelations.php b/src/Bridges/Laravel/HasEloquentRelations.php index 2b6990e..79d30a5 100644 --- a/src/Bridges/Laravel/HasEloquentRelations.php +++ b/src/Bridges/Laravel/HasEloquentRelations.php @@ -5,10 +5,12 @@ use Cristal\ApiWrapper\Relations\RelationInterface; use Cristal\ApiWrapper\Bridges\Laravel\Relations\HasOne as BridgeHasOne; use Cristal\ApiWrapper\Bridges\Laravel\Relations\HasMany as BridgeHasMany; +use Cristal\ApiWrapper\Bridges\Laravel\Relations\BelongsTo as BridgeBelongsTo; use Cristal\ApiWrapper\Bridges\Laravel\Relations\Builder as BridgeBuilder; use Illuminate\Database\Eloquent\Model as Eloquent; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\Relation; use LogicException; @@ -60,6 +62,21 @@ public function hasOne($related, $foreignKey = null, $localKey = null) return new BridgeHasOne($this, $instance, $foreignKey, $localKey); } + + public function belongsTo($related, $foreignKey = null, $ownerKey = null, $relationName = null) + { + $parent = $this->newRelatedInstance($related); + + $foreignKey = $foreignKey ?: $parent->getForeignKey(); + $ownerKey = $ownerKey ?: $parent->getKeyName(); + + if ($parent instanceof Eloquent) { + return new BelongsTo($parent->newQuery(), $this->createFakeEloquentModel(), $foreignKey, $ownerKey, $relationName); + } + + return new BridgeBelongsTo($parent, $this, $foreignKey, $ownerKey); + } + /** * @return BridgeBuilder */