2017-07-18 72 views
0

我有表orders其中有列文件。该列保存文件ID,它们用逗号分隔。使用连接和逗号分隔值在列中执行查询Laravel

第二个表格是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); 

你能在这里引导一下吗?

+1

如果它处于开发阶段,您应该在文档表中使用'order_id'来定义关系。其他明智的'JSON'可以是另一个不错的选择 –

+0

但'文件'是分开的表格。当我通过管理面板上传文件存储在那里。我不知道'order_id',我不需要知道它。我不确定我了解你。 – user5996816

+0

你可以使用'array_map'来获得一列的file_id,但所有这些都很难得到。 –

回答

2

希望它会为你工作。有一个尝试

$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)希望它会返回所需的结果。

+0

快速问题:如何选择那么document_name例如?当我做'@foreach($ downloadableOrders as $ download){$ download-> document_name}'我得到NULL – user5996816

+0

@ user5996816我更新了我的答案,并且我认为它为你准备好了:) –

+0

有错误'Undefined property:stdClass :: $ user' – user5996816