Vì vậy, tôi có ý tưởng điên rồ này liên quan đến Laravel và kế thừa mô hình. Tôi muốn cấu hình một tập hợp các mô hình với một phụ huynh duy nhất nhưng khi tôi yêu cầu mô hình con tôi muốn dữ liệu được trả về. Ví dụ: tôi sẽ có mô hình Danh bạ là cha mẹ:Laravel 5 Kiểu thừa kế - trả lại dữ liệu gốc khi nhận được chế độ con
Contacts: id, first_name, last_name, image
Sau đó, tôi sẽ có một loạt loại liên hệ kế thừa từ Danh sách liên hệ. Mỗi mô hình con này sẽ có bộ trường riêng của họ (tức là đối với các thành viên tôi cần biết khi họ tham gia, vv. Nhưng đối với các tình nguyện viên, tôi có thể cần biết liệu họ có giấy chứng nhận cấp cứu mới nhất) hay không. Dưới đây là một vài ví dụ:
Members: contact_id, joined_on, birthday, medical_concerns
Volunteers: contact_id, current_first_aid, interests
Staff: contact_id, pay_rate
Tôi rất thích để có thể làm điều gì đó như:
$members = \App\Member::all();
và có dữ liệu liên lạc VÀ viên trở, nếu như tất cả mọi thứ là một hàng, như thế này:
+---+------------+-----------+-------+------------+------------+------------------+
|id | first_name | last_name | image | joined_on | birthday | medical_concerns |
+---+------------+-----------+-------+------------+------------+------------------+
| 1 | Fred | Bloggs | null | 2015-01-01 | 1993-10-22 | false |
| 2 | Jim | Phillips | null | 2016-04-30 | 1987-09-22 | true |
+---+------------+-----------+-------+------------+------------+------------------+
Và để làm cho nó khó khăn hơn một chút, tôi muốn tất cả các mối quan hệ áp dụng cho phụ huynh làm việc cho trẻ. Vì vậy, tôi có thể làm một cái gì đó như thế này:
$members = \App\Member::find(1)->phone
Và, mặc dù mô hình thành viên không có mối quan hệ được xác định với mô hình điện thoại nó sẽ trả lại điện thoại liên quan đến Liên vì phụ huynh có mối quan hệ đó.
Tôi cũng muốn để có thể xác định các cột mà không thuộc về đứa trẻ khi lấy dữ liệu và không có Laravel ném một lỗi:
$members = \App\Member::all(['first_name','last_name','joined_on'])
Tôi đã sai lầm xung quanh với trọng các mô hình hùng hồn và viết phiên bản của riêng tôi của tất cả và tìm các phương pháp đang hoạt động nhưng có vẻ như tôi có thể phải ghi đè tất cả các phương pháp để làm việc này và có thể sẽ hoạt động nhiều hơn chỉ Eloquent forgoing và tìm kiếm khác (hoặc của riêng tôi bespoke) giải pháp.
Vì vậy, tôi đoán câu hỏi của tôi là: Có cách nào "dễ dàng" để làm điều này với Laravel hay tôi đang cố gắng làm cho nó làm những việc mà nó không bao giờ có ý định làm?