diff --git a/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php b/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php index afd328a7ea94..7626b16bd835 100644 --- a/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php +++ b/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php @@ -3,6 +3,7 @@ namespace Illuminate\Database\Eloquent\Relations\Concerns; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\MorphPivot; use Illuminate\Support\Str; trait AsPivot @@ -166,13 +167,13 @@ protected function getDeleteQuery() */ public function getTable() { - if (! isset($this->table)) { + if (! isset($this->table) && (! $this instanceof MorphPivot)) { $this->setTable(str_replace( '\\', '', Str::snake(Str::singular(class_basename($this))) )); } - return $this->table; + return parent::getTable(); } /** diff --git a/tests/Database/DatabaseEloquentIntegrationTest.php b/tests/Database/DatabaseEloquentIntegrationTest.php index c27cbfe476b1..3bf6bcd2991a 100644 --- a/tests/Database/DatabaseEloquentIntegrationTest.php +++ b/tests/Database/DatabaseEloquentIntegrationTest.php @@ -2834,10 +2834,14 @@ public function parentPost() public function tags() { - return $this->morphToMany(EloquentTestTag::class, 'taggable', null, null, 'tag_id')->withPivot('taxonomy'); + return $this->morphToMany(EloquentTestTag::class, 'taggable', Taggable::class, null, 'tag_id')->withPivot('taxonomy'); } } +class Taggable extends MorphPivot +{ +} + class EloquentTestTag extends Eloquent { protected $table = 'tags';