我有两个数据库表 耐心的 - ID - 名称 报告 - ID - 描述 和枢轴塔 patient_report - ID --report_id --patient_id
我的病人模型
class Patient extends Model
{
public function reports()
{
return $this->belongsToMany('App\Report' , 'patient_reports');
}
}
我的报告模型
class Report extends Model
{
public function patients()
{
return $this->belongsToMany('App\Patient' , 'patient_reports');
}
}
我的ReportControlller
public function viewList($reportFloor = null)
{
$report = Report::orderBy('created_at' , 'desc')->paginate(50);
return view('admin.report_list' , ['reports' => $report]);
}
数据库:患者表有report_id列,报告表有patient_id列 N.B:我想找一个有报告的患者姓名。我正在使用像这样的laravel动态属性--- 最后我的刀片
@foreach ($reports as $report)
{{ $report->patients->name }}
@endforeach
试试这个:
@foreach ($reports->patients as $patient)
{{ $patient->name }}
@endforeach
正如错误所暗示的那样,您正在尝试访问集合上的name属性。要修复你应该改变:
@foreach ($reports as $report)
{{ $report->patients->name }}
@endforeach
至:
@foreach ($reports as $report)
@foreach ($report->patients as $patient)
{{ $patient->name }}
@endforeach
@endforeach
在你的控制器中,我会首先找到患者,然后获得他们的报告。
$patients = Patient::with('reports')->get();
然后在视图中我会这样做:
//This will first get all the patients
@foreach ($patients as $patient)
// This will get each of patients relational reports
@foreach ($patient->reports as $report)
{{ $report->name }}
@endforeach
@endforeach