Php Laravel联接查询不适用于4个表
我有四张桌子 表名:诊所 字段:clinicID、clinicName 表名:位置 Fileds:locationID、clinicID、locationname 表名称:服务 字段:ServiceId、ServiceName 表名:LocationServices 字段:locationServiceID、locationID、ServiceId 我的要求是,当我通过clinicID时,我需要检索相应的诊所服务名称,可能不止一个 但当我尝试连接查询时,它不起作用 下面是我在控制器中的代码Php Laravel联接查询不适用于4个表,php,laravel,Php,Laravel,我有四张桌子 表名:诊所 字段:clinicID、clinicName 表名:位置 Fileds:locationID、clinicID、locationname 表名称:服务 字段:ServiceId、ServiceName 表名:LocationServices 字段:locationServiceID、locationID、ServiceId 我的要求是,当我通过clinicID时,我需要检索相应的诊所服务名称,可能不止一个 但当我尝试连接查询时,它不起作用 下面是我在控制器中的代码 p
public function showClinic($id)
{
$clinic = Clinic::find($id);
$locations = Location::where('clinicID', $id)->get();
$locationsservices=\App\Clinic::with('locations');
var_dump($locationsservices);
die();
return view('clinic.show')->with(['locations' => $locations ,'clinic'=>$clinic]);
}
参考资料可能对你有帮助
多连接
您可以通过使用关系获取此详细信息。 在
Clinic
模型中,添加
public function locations()
{
return $this->belongsTo('App\Models\Locations','clinicID','clinicID');
}
在位置
模型中,添加
public function location_services()
{
return $this->hasOne('App\Models\LocationServices','locationID','locationID');
}
在LocationServices
模型上
public function services()
{
return $this->hasOne('App\Models\Services','ServiceId','ServiceId');
}
你可以通过
$clinic_info = Clinic::find($id);
if(isset($clinic_info->locations))
{
if(isset($clinic_info->locations->location_services))
{
if(isset($clinic_info->locations->location_services->services))
{
echo $clinic_info->locations->location_services->services->ServiceName;
}
}
}
请与我们分享您的模型。您如何定义实体之间的关系?
$clinic_info = Clinic::find($id);
if(isset($clinic_info->locations))
{
if(isset($clinic_info->locations->location_services))
{
if(isset($clinic_info->locations->location_services->services))
{
echo $clinic_info->locations->location_services->services->ServiceName;
}
}
}