【发布时间】:2018-05-26 15:38:55
【问题描述】:
我一直在尝试从多个表中检索数据,在我遇到使用数据透视表(或多对多关系表之间的链接表)的挑战之前,一切都很清晰。
到目前为止,我可以轻松地从每个表中获取数据,但我只需要进行一次查询,它将获取我需要的所有数据。
表格 = 产品、详细信息、类别、product_category(这是一个数据透视表)
product_category = product_id | category_id(这些列中的每一列都在 id 上引用 - product_id 在产品上,category_id 在类别上)
获取查询的代码:
$products = DB::table('products')
->join('details', 'products.id', '=', 'details.product_id')
->leftJoin('product_category', function($join) {
$join->on('products.id', '=', 'product_category.product_id');
})
->select('products.*', 'details.*', 'product_category.*')
->orderBy('products.created_at', 'desc')
->paginate(10);
然后在索引页面上,我可以获取 foreach 循环中的所有数据,但有一个小问题 - 我只能获取 product_category 的列,换句话说,只有 category_id 引用了 categories.id - 但我需要获取那些类别表中的值。
请不要给我文档或类似的东西,我每次在提出问题之前都会进行大量研究并阅读至少十几个类似的问答,但有时我需要另一种观点来获得解决方案并了解它是如何工作的。感谢每一个帮助。
【问题讨论】:
-
您是否在模型中设置了任何关系?
-
是的。所有关系都设置正确,正如我所说,我可以轻松获取数据,只是不知道如何混合它并获得单个查询。
标签: mysql laravel laravel-query-builder