0

ビジネス、サービス、service_venues の 3 つのテーブルがあります。service_name = $search を持つビジネスのサービスが必要で、選択したサービスの会場を取得します。サービスとリソースの方法を使用しています。

search_keyword がある場合、データはフィルタリングされません。しかし、他の条件は機能しています。どうすればこれを修正できますか?

ビジネスモデルで

public function businessServices()
    {
        return $this->hasMany(BusinessService::class);
    }

ビジネスサービスモデル

 public function businessServiceVenues()
    {
        return $this->hasMany(BusinessServiceVenue::class);
    }

サービス中のファイル

public function getServices($business){
       $businessservices =  $business->with(['businessServices'=> function ($q){
            $q->where('business_services.service_name', 'like', '%'.request()->search_key.'%');
        }
        ])->first();        
        return  new servicesResource($businessservices);
    }

サービス中のリソース

$services = $this->businessServices()
        ->with(['businessServiceStaffs','businessServiceVenues'])
        ->when(request()->filled('venue_ids'), function ($q) use($request) {
            $q->whereHas('businessServiceVenues', function($q1) use($request) {
                $q1->whereIn('venue_id',$request->venue_ids);
            });
          })
        ->when(request()->filled('staff_id'), function ($q) use($request) {
            $q->whereHas('businessServiceStaffs', function($q1) use($request) {
                $q1->where('staff_id','=',$request->staff_id);
            });
          })
        ->get();
4

1 に答える 1