laravel多态关联中如何自定义morphTo对应的模型
时间: 2023-06-04 08:02:59 浏览: 52
很好的问题!在Laravel中,多态关联使用morphTo和morphMany实现。要自定义morphTo对应的模型,可以在模型的morphMap方法中定义模型别名。例如,如果要将 "commentable_type" 字段的值 “post” 映射到 App\Post 模型,可以在AppServiceProvider中的boot方法中这样写:
```php
public function boot()
{
//定义模型别名
Relation::morphMap([
'post' => 'App\Post',
'video' => 'App\Video',
]);
}
```
然后在定义多态关联时,就可以使用这些别名:
```php
class Comment extends Model
{
public function commentable()
{
return $this->morphTo();
}
}
class Post extends Model
{
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
}
class Video extends Model
{
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
}
```
通过这种方式,就可以使用自定义的模型名称来建立多态关联。希望能帮到你!