Laravel 连接查询在传递变量时不起作用

我想通过传递一个 php varaiable 在 laravel 中执行一个连接语句,当传递一个 varibale 时它不起作用。以下是我的代码


  $loc_services = Clinic::select('*')

    ->join('locations', 'locations.clinicID', '=', 'clinics.clinicID')

    ->join('location_services', 'location_services.locationID', '=', 'locations.locationID')

    ->join('services', 'services.serviceID', '=', $services_id)

    ->get();

我尝试将其作为声明执行并得到以下信息


select * from `clinics` inner join `locations` on `locations`.`clinicID` = `clinics`.`clinicID` inner join `location_services` on `location_services`.`locationID` = `locations`.`locationID` inner join `services` on `services`.`serviceID` = `10`

当我直接在 phpmyadmin 中执行它时,它返回 fllowing 错误


Column not found: 1054 Unknown column '10' in 'on clause', i found that error is triggering because `10` is inside  `''` quotes, how can i execute this


青春有我
浏览 99回答 2
2回答

绝地无双

你必须$services_id在云不在的地方通过join on$loc_services = Clinic::select('*')->join('locations', 'locations.clinicID', '=', 'clinics.clinicID')->join('location_services', 'location_services.locationID', '=', 'locations.locationID')->join('services', 'services.serviceID', '=', 'clinics.services_id')//service_id column in Clinic->where('services.serviceID',$services_id)    ->get();

慕娘9325324

join 中的第三个参数将被视为列。如果你想加入具有特定值的列,你可以像这样使用闭包:$loc_services = Clinic::select('*')    ->join('locations', 'locations.clinicID', '=', 'clinics.clinicID')    ->join('location_services', 'location_services.locationID', '=', 'locations.locationID')    ->join('services', function($join) use ($service_id) {         $join->where('services.serviceID', $service_id);      })    ->get();原始 sql 将是:inner join `services` on `services`.`serviceID` = 10
打开App,查看更多内容
随时随地看视频慕课网APP