Bạn nên sử dụng polymorphic
các mối quan hệ cho điều này. Nó cho phép nhiều mô hình sử dụng một bảng duy nhất.
Trong trường hợp cụ thể của bạn, mỗi bảng của bạn sẽ tham chiếu đến một noteable_id
và một noteable_type
.
noteable_id
sẽ chứa id của (A/B/C)
mô hình.
noteable_type
sẽ chứa tên chuỗi của mô hình (A/B/C)
.
(A/B/C)
các mô hình bây giờ sẽ nhận được một thuộc tính mới:
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
Và note
mô hình sẽ bắt đầu các thuộc tính đa hình của nó dựa vào tên thuộc tính được sử dụng để xác định các loại và id polymorphic ids and types
:
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
Bây giờ bạn có thể chỉ cần gọi ->noteable
trên (A/B/C)
và tất cả chúng đều dùng chung 1 bảng mà không cần một bảng tổng hợp khác cho mỗi bảng.