Skip to content

Conversation

@thewebartisan7
Copy link
Contributor

@thewebartisan7 thewebartisan7 commented Aug 27, 2020

At the moment if you use hasMorph() you need to use model class name and can't use alias, you need to use Relation::getMorphedModel.
But this is already done when you use * which auto discover morphed relations.

Moving this conversion for all case allow to use directly aliases.

Example now:

        $morphable =  [
                "App\AnotherModel",
                Relation::getMorphedModel('alias')
        ];
        $dataset = MyModel::query()
            ->whereHasMorph('morphable', $morphable)
            ->with('morphable')
            ->orderBy('id')
            ->limit(50)
            ->get()
            ->groupBy('morphable_type');

With this change can be:

        $morphable =  [
                "App\AnotherModel",
                'alias',
                'another',
                "App\YetAnotherModel",
        ];
        $dataset = MyModel::query()
            ->whereHasMorph('morphable', $morphable)
            ->with('morphable')
            ->orderBy('id')
            ->limit(50)
            ->get()
            ->groupBy('morphable_type');

At the moment if you use hasMorph() you need to use model class name and can't use alias, you need to use `Relation::getMorphedModel`.
But this is already done when you use `*` which auto discover morphed relations.

Moving this conversion for all case allow to use directly aliases.

Example now:


```
        $morphable =  [
                "App\AnotherModel",
                Relation::getMorphedModel('alias')
        ];
        $dataset = MyModel::query()
            ->whereHasMorph('morphable', $morphable)
            ->with('morphable')
            ->orderBy('id')
            ->limit(50)
            ->get()
            ->groupBy('morphable_type');
```

With this change can be:

```
        $morphable =  [
                "App\AnotherModel",
                'alias',
                'another',
                "App\YetAnotherModel",
        ];
        $dataset = MyModel::query()
            ->whereHasMorph('morphable', $morphable)
            ->with('morphable')
            ->orderBy('id')
            ->limit(50)
            ->get()
            ->groupBy('morphable_type');
```
@driesvints driesvints changed the title Allow to use alias of morphed model [7.x] Allow to use alias of morphed model Aug 27, 2020
@taylorotwell taylorotwell merged commit 6a49976 into laravel:7.x Aug 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants