在 Laravel 的列中使用连接和逗号分隔值执行查询
Perform query with join and comma separated values in column in Laravel
我有 table orders
,其中包含列文件。该列包含文件 ID,它们以逗号分隔。
第二个 table 是 documents
。
Table 姓名:订单
orders_id | order_details | file_id
------------------------------------
1 | some details | 1,2
Table 名称:文档
id | name
------------------
1 | file name
2 | file2 name2
目前我有这个查询只查询 orders
table 但我也想加入文档所以我可以向客户显示在 file_id
列中连接的文档的名称在 orders
$docomuntOrders = Order::where('user_id',getCurrentUser()->user_id)
->orderBy('order_id', 'DESC')
->paginate(10);
你能在这里稍微指导一下吗?
希望对您有用。试一试
$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)
希望它会 return 想要的结果。
一个用户有多个公司,公司 ID 在用户 table 的单个文件中,以逗号分隔。在那种情况下,这就是解决方案,与您的问题非常相似。
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")
]);
我有 table orders
,其中包含列文件。该列包含文件 ID,它们以逗号分隔。
第二个 table 是 documents
。
Table 姓名:订单
orders_id | order_details | file_id
------------------------------------
1 | some details | 1,2
Table 名称:文档
id | name
------------------
1 | file name
2 | file2 name2
目前我有这个查询只查询 orders
table 但我也想加入文档所以我可以向客户显示在 file_id
列中连接的文档的名称在 orders
$docomuntOrders = Order::where('user_id',getCurrentUser()->user_id)
->orderBy('order_id', 'DESC')
->paginate(10);
你能在这里稍微指导一下吗?
希望对您有用。试一试
$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)
希望它会 return 想要的结果。
一个用户有多个公司,公司 ID 在用户 table 的单个文件中,以逗号分隔。在那种情况下,这就是解决方案,与您的问题非常相似。
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")
]);