在SQL中将连接转换为子查询(laravel控制器)

时间:2017-07-03 05:28:56

标签: sql laravel

我有两个以上的表,从数据库中提取 2,00,000 记录花费了太多时间,我所期待的,所以我需要将其转换为子查询?

以下代码:

->join('track_details','track_details.code','=',$esealTable.'.primary_id')
->join('track_history as th','th.track_id','=','track_details.track_id')
->join('locations as l','l.location_id','=','th.src_loc_id')
->join('products','products.product_id','=',$esealTable.'.pid')
->where(['level_id'=>0, 'products.product_type_id'=>8003])
->whereIn('l.location_type_id',[741,744])
->whereIn('th.transition_id',[537,569]);
->get(['primary_id as iot','products.material_code','th.sync_time as datetime'])
->take(200000);

1 个答案:

答案 0 :(得分:1)

如果您需要data中使用query检索到的所有json

Laravel提供类似于toJson()功能的toArray()功能。请参阅文档here。您只需在查询末尾添加toJson(),如下所示:

->join('track_details','track_details.code','=',$esealTable.'.primary_id')
...
...
..
->get(['primary_id as iot','products.material_code','th.sync_time as datetime'])
->take(200000)
->toJson();

通过这种方式,您可以直接将提取的数据转换为json格式。