where('map', '=', $map); return $techs->get()->toJson(); } public function search(Request $request) { $validatedData = $request->validate([ 'phrase' => 'string|nullable', 'ruleset' => 'array|nullable', 'ruleset.competitive' => 'boolean', 'ruleset.mg' => 'boolean', 'ruleset.nl' => 'boolean', 'ruleset.owg' => 'boolean', 'type' => 'string|nullable', ]); $techs = Technique::where('index', '=', 1); if (!empty($validatedData['type'])) { $techs = $techs->where('type', '=', $validatedData['type']); } if (!empty($validatedData['phrase'])) { $search = $validatedData['phrase']; $techs = $techs->where(function (Builder $query) use ($search) { $query->where('title', 'LIKE', '%'.$search.'%') ->orWhere('short', 'LIKE', '%'.$search.'%'); }); } if (isset($validatedData['ruleset'])) { $com = isset($validatedData['ruleset']['competitive']) && $validatedData['ruleset']['competitive']; $owg = isset($validatedData['ruleset']['owg']) && $validatedData['ruleset']['owg']; $mg = isset($validatedData['ruleset']['mg']) && $validatedData['ruleset']['mg']; $nl = isset($validatedData['ruleset']['nl']) && $validatedData['ruleset']['nl']; $any = $com || $owg || $mg || $nl; $all = $com && $owg && $mg && $nl; if ($any && !$all) { $techs->where(function(Builder $query) use ($com, $owg, $mg, $nl) { $query->whereNull('rulesets'); if ($com) { $query->orWhere('rulesets->competitive', '=', true); } if ($owg) { $query->orWhere('rulesets->owg', '=', true); } if ($mg) { $query->orWhere('rulesets->mg', '=', true); } if ($nl) { $query->orWhere('rulesets->nl', '=', true); } }); } } return $techs->get()->toJson(); } public function single(Request $request, Technique $tech) { $this->authorize('view', $tech); $tech->load(['chapters', 'relations']); return $tech->toJson(); } }