SCOUT 관계 검색

Admin 2020.04.16 18:08 조회 수 : 307

라라벨 SCOUT 검색시 관계 조건절(whereHas)을 지원하지 않는다.

힘들게 찾아낸 방법이다.

 

SCOUT 검색(Jane)과 관계(SponsorChild)에 새로 등록된 자료가 정상적으로 출력되었다.

 

scout.jpg

 

 

 

    $request->validate([

        'sponsor' => 'nullable|string',

        'search' => 'nullable|string|max:50',

    ]);

    $request->search = strip_tags($request->search);

    $search = array();

 

    if ($request->search) {

      $search = Sponsor::search($request->search)->keys()->toArray();

    }

 

    $sponsors = Sponsor::with(['SponsorChild'])->withCount('SponsorChild as CNT')

    ->where(function ($query) use ($request, $search){

      if($request->search) $query->whereIn('id', $search);

    })->whereHas('SponsorChild', function ($qry) use ($request){

      if($request->sponsor == 'NEW'){

        $qry->where('trans_type', '=', '');

        $qry->where('commitment_date', '<>', date("Y-m-d"))->orWhereNull('commitment_date');

        $qry->where('renewal_date', '<>', date("Y-m-d"))->orWhereNull('renewal_date');

      }

    })->orderBy('sponsors.id', 'asc')->paginate(25);