我有表orders
,其中包含列文件。该列保存文件ID,并以逗号分隔。
第二个表是documents
。
表名:订单
orders_id | order_details | file_id
------------------------------------
1 | some details | 1,2
表名:文件
id | name
------------------
1 | file name
2 | file2 name2
目前我的查询只查询orders
表,但我也想加入文档,这样我就可以向客户展示file_id
列中orders
列中连接的文档的名称
$docomuntOrders = Order::where('user_id',getCurrentUser()->user_id)
->orderBy('order_id', 'DESC')
->paginate(10);
你能在这里指点一下吗?
答案 0 :(得分:3)
希望它对你有用。试一试
$docomuntOrders = \DB::table("orders")
->select("orders.*",\DB::raw("GROUP_CONCAT(documents.name) as docname"))
->leftjoin("documents",\DB::raw("FIND_IN_SET(documents.id,orders.file_id)"),">",\DB::raw("'0'"))
->where('user_id',getCurrentUser()->user_id)
->groupBy("orders.id")
->paginate(10);
如果您尝试dd($docomuntOrders)
希望它会返回所需的结果。
答案 1 :(得分:0)
单个用户有多个公司,并且在用户表中的公司ID在一个文件中,以逗号分隔。在这种情况下,这就是解决方案,与您的问题非常相似。
Users::leftJoin("company_info as ci",\DB::raw("FIND_IN_SET(ci.id,users.company_ids)"),">",\DB::raw("'0'"))
->groupBy('users.id')
->get([
'users.*',
\DB::raw("GROUP_CONCAT(ci.company_name) as company_name")
]);