我一直在尝试从多个表中检索数据,直到我遇到使用数据透视表(或者在manyToMany关系表之间的链接表)的挑战之前,它一直很清楚。
到目前为止,我可以轻松地从每个表中获取数据,但我只需要进行一次查询,这将获取我需要的所有数据。
表格 =产品,详细信息,类别,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 - 但是我需要从类别表中获取这些值。
请,不要给我一份文件或类似的东西,我每次研究之前都会研究很多问题并阅读至少十几篇类似的Q& A,但有时我需要另一种观点获得解决方案并了解其工作原理。感谢每一个帮助。
答案 0 :(得分:1)
问题是覆盖了您的专栏信息。
您可以像这样修改您的查询:
'item'