---
description: https://viblo.asia/p/eloquent-relationships-in-laravel-phan-2-aRBvXWEokWE
---

# Custom Polymorphic Types

Theo mặc định, Laravel sẽ sử dụng tên lớp đầy đủ để lưu trữ các loại model có liên quan. Ví dụ, với các ví dụ ở trên, nơi một `comment` có thể thuộc về một `Post` hoặc một `Video`, `commentable_type` mặc định sẽ là một trong hai `App\Post` hoặc `App\Video` tương ứng. Tuy nhiên, bạn có thể muốn tách cơ sở dữ liệu của bạn từ cấu trúc bên trong của ứng dụng của bạn. Trong trường hợp đó, bạn có thể xác định một mối quan hệ "morph map" để hướng dẫn Eloquent để sử dụng một tên tùy chỉnh cho mỗi model thay vì tên lớp:

```
use Illuminate\Database\Eloquent\Relations\Relation;

Relation::morphMap([
    'posts' => App\Post::class,
    'videos' => App\Video::class,
]);
```

Bạn có thể đăng ký `morphMap` trong các `boot` function của `AppServiceProvider` của bạn hoặc tạo ra một service provider riêng biệt nếu bạn muốn.
