$query */ abstract class ScoutFilter extends Data { /** * @return Builder */ abstract public function getQuery(): Builder; /** @var Builder */ protected Builder $query; /** * @param array|string|null $request */ public static function fromRequest(array|string|null $request = null): static { $payload = is_string($request) ? json_decode(rawurldecode(base64_decode($request)), true) : $request; return static::fromPost($payload); } /** * @param array $post */ public static function fromPost(?array $post = null): static { return static::factory()->withoutMagicalCreation()->from($post ?: []); } /** * @param Collection $filter * @param array $conditions * @return Collection */ public function switches(Collection $filter, array $conditions): Collection { foreach ($conditions as $field => $value) { if ($value !== null) { $filter->push($field . ' = ' . ($value ? 'true' : 'false')); } } return $filter; } }