/** * 一覧表示 * * @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')); }
/** * 一覧表示 * * @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')); }