好吧,所以我對口才和laravel新鮮(不框架tho),但我在這裏打了一堵牆。 我需要在不同的表上使用條件執行一些查詢,所以急切的加載(::with()
)是無用的,因爲它會創建多個查詢。laravel雄辯的加入和對象關係映射
好吧,讓我們使用連接。但是在這種情況下,Laravel/Eloquent似乎放棄了對象關係的概念,只是返回一個平坦的行。 由爲例:
假如我像
$allInvoicesQuery = Invoice::join('contacts', 'contacts.id', '=', 'invoices.contact_id')->get();
,然後循環如
foreach ($allInvoicesQuery as $oneInvoice) {
... working with fields
}
有沒有更多的$oneInvoice->invoiceFieldName
概念和$oneInvoice->contact->contactFieldName
我必須得到直接聯繫字段$oneInvoice->contactFieldName
最重要的是,相同的命名列wi會被過分糾纏(如id
或created_at
)。
所以我的問題是:
我說得對假設沒有解決這一點,我必須手動定義字段中選擇,以避免同名overwritting像
發票::選擇(」 invoices.created_at as invoice.create,contacts.created_at as contact_create)
如果發生多個連接,它會使所有查詢構建過程變得漫長而複雜。但主要是,它只是破壞了框架應該帶來的所有模型關係工作?
有沒有更多的模型關係爲導向的解決方案來使用laravel或在雄辯的ORM?
嗨,感謝您的幫助, 但「帶」的方法在這裏不起作用。這將創建2個單獨的查詢。 首先獲取所有發票,第二個獲取發票的所有聯繫人。實際上,你不能用它來建立複雜的條件。 例如,您無法獲取聯繫人姓名以'A'開頭的第50到第75個發票 – Hairmenu