Advertisement
maprangsoft

query เวอร์ชั่นงาน

Sep 3rd, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.33 KB | None | 0 0
  1.    public function index(Request $request)
  2.     {
  3.         try {
  4.  
  5.             $limit = 20;
  6.  
  7.             $query = WorkGroup::query()
  8.                 ->with([
  9.                     'type',
  10.                     'group_subs' => function ($q1) use ($request) {
  11.  
  12.                         $q1->leftJoin('work_group_subs AS subGroup', function ($q2) use ($request) {
  13.                             $q2->on('work_group_subs.id', '<', 'subGroup.id')
  14.                                 ->on('work_group_subs.sub_id', '=', 'subGroup.sub_id')
  15.                                 ->where('subGroup.version_id', '<=', DB::raw($request->version_id))
  16.                                 ->whereNull('subGroup.deleted_at');
  17.                         })->whereNull('subGroup.id');
  18.  
  19.                         if ($request->has('version_id')) {
  20.                             $q1->where('work_group_subs.version_id', '<=', $request->version_id);
  21.                         } else {
  22.                             $q1->where('work_group_subs.version_id', 1);
  23.                         }
  24.                         $q1->oldest('work_group_subs.order_by')
  25.                             ->select('work_group_subs.*');
  26.                     },
  27.                     'group_subs.description_mains' => function ($q1) use ($request) {
  28.  
  29.                         $q1->leftJoin('work_description_mains AS work', function ($q2) use ($request) {
  30.                             $q2->on('work_description_mains.id', '<', 'work.id')
  31.                                 ->on('work_description_mains.work_desc_main_id', '=', 'work.work_desc_main_id')
  32.                                 ->where('work.version_id', '<=', DB::raw($request->version_id))
  33.                                 ->whereNull('work.deleted_at');
  34.                         })->whereNull('work.id');
  35.  
  36.                         if ($request->has('version_id')) {
  37.                             $q1->where('work_description_mains.version_id', '<=', $request->version_id);
  38.                         } else {
  39.                             $q1->where('work_description_mains.version_id', 1);
  40.                         }
  41.                         $q1->oldest('work_description_mains.order_by')
  42.                             ->select('work_description_mains.*');
  43.                     },
  44.                     'group_subs.description_mains.work_descriptions' => function ($q1) use ($request) {
  45.  
  46.                         $q1->leftJoin('work_descriptions AS description', function ($q2) use ($request) {
  47.                             $q2->on('work_descriptions.id', '<', 'description.id')
  48.                                 ->on('work_descriptions.work_desc_id', '=', 'description.work_desc_id')
  49.                                 ->where('description.version_id', '<=', DB::raw($request->version_id))
  50.                                 ->whereNull('description.deleted_at');
  51.                         })->whereNull('description.id');
  52.  
  53.                         if ($request->has('version_id')) {
  54.                             $q1->where('work_descriptions.version_id', '<=', $request->version_id);
  55.                         } else {
  56.                             $q1->where('work_descriptions.version_id', 1);
  57.                         }
  58.                         $q1->select('work_descriptions.*');
  59.                     },
  60.                     'group_subs.description_mains.work_descriptions.work_cost' => function ($q1) use ($request) {
  61.  
  62.                         $q1->where('work_costs.worker_id', 4)
  63.                             ->leftJoin('work_costs AS cost', function ($q2) use ($request) {
  64.                                 $q2->on('work_costs.id', '<', 'cost.id')
  65.                                     ->on('work_costs.work_cost_id', '=', 'cost.work_cost_id')
  66.                                     ->where('cost.version_id', '<=', DB::raw($request->version_id))
  67.                                     ->whereNull('cost.deleted_at');
  68.                             })->whereNull('cost.id');
  69.  
  70.                         if ($request->has('version_id')) {
  71.                             $q1->where('work_costs.version_id', '<=', $request->version_id);
  72.                         } else {
  73.                             $q1->where('work_costs.version_id', 1);
  74.                         }
  75.                         $q1->select('work_costs.*');
  76.                     },
  77.                     'group_subs.description_mains.work_descriptions.work_cost_technician' => function ($q1) use ($request) {
  78.  
  79.                         $q1->where('work_costs.worker_id', 1)
  80.                             ->leftJoin('work_costs AS cost', function ($q2) use ($request) {
  81.                                 $q2->on('work_costs.id', '<', 'cost.id')
  82.                                     ->on('work_costs.work_cost_id', '=', 'cost.work_cost_id')
  83.                                     ->where('cost.version_id', '<=', DB::raw($request->version_id))
  84.                                     ->whereNull('cost.deleted_at');
  85.                             })->whereNull('cost.id');
  86.  
  87.                         if ($request->has('version_id')) {
  88.                             $q1->where('work_costs.version_id', '<=', $request->version_id);
  89.                         } else {
  90.                             $q1->where('work_costs.version_id', 1);
  91.                         }
  92.                         $q1->select('work_costs.*');
  93.                     }
  94.                 ]);
  95.  
  96.             $query->leftJoin('work_groups AS group', function ($q) use ($request) {
  97.                 $q->on('work_groups.id', '<', 'group.id')
  98.                     ->on('work_groups.group_id', '=', 'group.group_id')
  99.                     ->where('group.version_id', '<=', DB::raw($request->version_id))
  100.                     ->whereNull('group.deleted_at');
  101.             })->whereNull('group.id');
  102.  
  103.             if ($request->has('version_id')) {
  104.                 $query->where('work_groups.version_id', '<=', $request->version_id);
  105.             } else {
  106.                 $query->where('work_groups.version_id', 1);
  107.             }
  108.  
  109.             $query->oldest('work_groups.order_by')
  110.                 ->select('work_groups.*');
  111.  
  112.             $groups = $query->paginate($limit);
  113.             $page = paginator($groups, $limit);
  114.  
  115.             return $this->sendResponse(WorkGroupResource::collection($groups), 'Version retrieved successfully.', $page);
  116.         } catch (\Exception $e) {
  117.             return $this->sendError("Version can't retrieved!", $e->getMessage());
  118.         }
  119.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement