Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

imamhsn195's avatar

Multi level Query for search via Job Creation dates range and Port names

Need suggestions from experts for a feasible way to filter ports with filtering port->vessels->job->created_at

public function port_reports()

    {
        $port = request('port');
        $searchfrom = request('searchfrom');
        $searchto = request('searchto');

​        $ports = Port::WhereHas('vesselLoadings.job', function ($query) use ($searchfrom, $searchto) {
            $query->whereBetween('created_at', [$searchfrom, $searchto]);
        })
            ->orWhereHas('vesselDischarges.job', function ($query) use ($searchfrom, $searchto) {
                $query->whereBetween('created_at', [$searchfrom, $searchto]);
            })
           ->orWhereHas('flightLoadings.job', function ($query) use ($searchfrom, $searchto) {
                $query->whereBetween('created_at', [$searchfrom, $searchto]);
            })
​           ->orWhereHas('flightDischarges.job', function ($query) use ($searchfrom, $searchto) {
                $query->whereBetween('created_at', [$searchfrom, $searchto]);
            })
            ->orwhere('name', 'like', "%$port%")
            ->latest()
            ->paginate(10);
        return view('ports.report', compact('ports'));

    }

0 likes
1 reply

Please or to participate in this conversation.