我有一個現有的數據庫,我需要使用(不修改)使用laravel的項目。laravel relationship without morphing
有一個Accounts
表,Vendor
表和Contacts
表。 Contacts
可以屬於Account
或Vendor
,關係爲belongTo
/hasMany
。
Contacts
表具有一個Owner
列,該列用於鍵入Accounts
或Vendor
表的主鍵。
根據我的理解,在laravel世界中這樣做的「正確」方式是使用變形,在表中添加contactable_id
和contactable_type
列,然後從那裏開始。
但是,由於我無法修改數據庫,我需要一種使用現有關係的方法。
我可以通過添加方法將Contact
類這樣做一些排序的hackish:
public static function account_contacts()
{
return DB::table('Contacts')
->join('Accounts', 'Contacts.Owner', '=', 'Accounts.ID');
}
然而,這將返回一個數組的數組代替Contact
對象。
有沒有辦法讓實際的Contact
對象回來,或者在不使用變形的情況下創建關係?
編輯:抱歉,我需要的不清晰。我只想獲得全部Account
:: Contacts
或全部Vendor
:: Contacts
作爲Contacts
的數組,因此我可以使用它們作爲Contact
模型而不是數組來重複它們。
@ alejandro--看起來很完美。它是否可以打開?用分頁方法更新了 – user101289
@ user101289。 – alepeino