Esempio n. 1
0
 /**
  * 一覧表示
  *
  * @param Request $request
  * @return \Illuminate\View\View
  */
 public function index(Request $request)
 {
     // 作物一覧を取得
     $crops = Crop::orderBy('display_order')->get();
     // 未選択の場合、先頭の作物を選択
     $crop = Crop::findOrFail($request->input('crop_id') ?: $crops->first()->id);
     // 作物に紐付く作業内容を取得
     $works = $crop->works()->orderBy('works.display_order')->get();
     if ($request->ajax()) {
         return compact('works');
     }
     // 圃場一覧を取得
     $workFields = WorkField::orderBy('display_order')->get();
     // 検索
     $workRecordsQuery = WorkRecord::with(['workSeeding', 'workPestControls', 'workDiaries' => function ($query) use($request) {
         if (!$request->has('archive')) {
             $query->where('archive', false);
         }
     }, 'workDiaries.workField', 'work'])->whereExists(function ($query) use($request, $crop) {
         $query->select(DB::raw(1))->from('work_diaries')->join('work_diary_work_record', 'work_diary_work_record.work_diary_id', '=', 'work_diaries.id')->whereNull('work_diaries.deleted_at')->whereRaw('work_diary_work_record.work_record_id = work_records.id');
         if (!$request->has('archive')) {
             $query->where('archive', false);
         }
         if ($request->has('field_ids')) {
             // 圃場を絞込
             $query->whereIn('work_diaries.work_field_id', $request->input('field_ids'));
         }
     })->where('crop_id', $crop->id);
     if ($request->has('work_ids')) {
         // 作業内容を絞込
         $workRecordsQuery->whereIn('work_id', $request->input('work_ids'));
     }
     $workRecords = $workRecordsQuery->latest()->paginate(config('const.max_work_record'));
     return view('workRecord.index', compact('crops', 'works', 'workFields', 'workRecords'));
 }
Esempio n. 2
0
 /**
  * 一覧表示
  *
  * @param Request $request
  * @return \Illuminate\View\View
  */
 public function index(Request $request)
 {
     // 日誌一覧を取得
     $builder = WorkDiary::with('crop', 'workField');
     if (!is_null($request->input('field_ids'))) {
         $builder->whereIn('work_field_id', (array) $request->input('field_ids'));
     }
     if (!$request->has('archive')) {
         $builder->where('archive', false);
     }
     $workDiaries = $builder->orderBy('archive')->latest()->paginate(config('const.max_work_diary'));
     // 圃場一覧を取得
     $workFields = WorkField::orderBy('display_order')->get();
     return view('workDiary.index', compact('workFields', 'data', 'workDiaries'));
 }