[英]displaying an array but it return empty
美好的一天,我有一个 laravel 5.8 项目,我有一个小问题我有这个代码
public function doctor_details($doctor_id){
$doctor = DB::table('doctors')->select('specification')->where('doctor_id', $doctor_id)->get>first();
$specs_data = explode(',', $doctor_specs);
$specs_array = [];
foreach ($specs_data as $doctor_spec) {
$doctor_spec_result = DB::table('specializations')->where { return explode('speciality_id'',', $doctor_spec)->get();
foreach ($doctor_spec_result as $doctor_spec_res) {
$specs_array[] = $doctor_spec_res->speciality_name;
}
}
return view ('doctor_details', compact('doctor', 'specs_array'));
}
现在如果我做 dd($doctor_spec_result); 结果是
如您所见,我得到一个空数组,但如果我这样做 dd($specs_data); 结果是
如您所见,肯定有数据,但我无法使其正常工作
这是我的刀片
<div class="row">
<div class="col-lg-12">
<h3>{{ $doctor->doctor_name }}</h3>
</div>
<div class="col-lg-12">
@foreach( $specs_array as $spec_output )
<p>{!! $spec_output !!}</p>
@endforeach
</div>
</div>
我认为您正在尝试获取一个列表,该列表仅包含查询的特定行的specification
字段的值,以便您可以获取specialty_name
。 您可以使用构建器上的pluck
方法为您执行此操作。 如果通过doctor_id
进行的搜索可能返回多个结果:
$doctor_specs = DB::table('doctors')
->where('doctor_id', $doctor_id)
->pluck('specification')
->transform(function ($item) { return explode(',', $item); })
->flatten();
$specs_array = DB::table('specializations')
// use whereIn to find all the rows by 'specialty_id'
->whereIn('speciality_id', $doctor_specs)
->pluck('specialty_name')
->toArray();
return view ('doctor_details', compact('doctor', 'specs_array'));
Laravel 6.x 文档 - 数据库 - 查询生成器 - 检索结果pluck
Laravel 6.x 文档 - Collections - 方法 - transform
Laravel 6.x 文档 - Collections - 方法 - flatten
更新:
虽然由于doctor_id
是一个键,所以只有一个,我们可以删除收集方法并更简单地处理这个:
$doctor_specs = explode(
',',
DB::table('doctors')->where('doctor_id', $doctor_id)
->value('specification')
);
理想情况下:
或者,如果使用doctors
表中的所有列检索$doctor
,包括specification
:
$doctor_specs = explode(',', $doctor->specification);
您可以使用 join 简化代码
$doctor_spec_result = DB::table('doctors')
->select('specializations.speciality_name')
->join('specializations','specializations.speciality_id','doctors.specification')
->where('doctors.doctor_id', $doctor_id)
->get();
return view ('doctor_details', compact('doctor', 'doctor_spec_result '));
改变这一行。
$doctor_spec_result = DB::table('specializations')->where('speciality_id', $doctor_spec)->get();
您正在检查 wearg 属性。 当您在 0 索引中获得规范时。
speciality_id to specification
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.