簡體   English   中英

顯示一個數組,但它返回空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM