好吧,所以我对口才和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