دریافت آرایه foreign key از داده های مدل Laravel Eloquent با Relationship

32

وقتی مدلی داریم که دارای فیلد های foreign  می باشد . هنگام خروجی گرفتن از مدل نمی توان اطلاعات foreign  را در خروجی قابل مشاهده کرد

مثال زیر را بررسی فرمائید:

$Providers = Provider::all();

return $Providers;

خروجی:

[
 {
   "id":1,
   "name":"\u0633\u06cc\u062f \u0627\u062d\u0645\u062f ",
   "specialist_id":222
 }
]

در این حالت اطلاعات فیلد های foreign  نمایش داده نمی شود مگر به این صورت خروجی بگیریم:

return $Providers->Specialist;

{
"id":1,
"TerminologyId":"thritaEHR.specialty",
"Code":101103,
"Value":"\u06a9\u0627\u0631\u062f\u0627\u0646 \u0627\u062a\u0627\u0642 \u0639\u0645\u0644",
"created_at":null,
"updated_at":null,
"status":0
}

توجه فرمائید در مدل فوق رویداد ()Specialist ارتباط با مدل  Specialist  را بر قرار می کند، که در زیر به آن اشاره شده است.

public function Specialist()

    {

        return $this->belongsTo(Specialist::class,'id');

    }

برای اینکه تمامی ارتباطات (Relationship) مدل، در خروجی نمایش داده شوند باید از with استفاده کنیم:

$Providers = Provider::all();

$Providers = $Providers->with('Specialist');

return $Providers;

[
{
   "id":1,
   "name":"\u0633\u06cc\u062f \u0627\u062d\u0645\u062f ",
   "specialist_id":222,
   "specialist":
    {
      "id":1,
      "TerminologyId":"thritaEHR.specialty",
      "Code":101103,"Value":"\u06a9\u0627\u0631\u062f\u0627\u0646 \u0627\u062a\u0627\u0642      \u0639\u0645\u0644",
      "created_at":null,
      "updated_at":null,
      "status":0
    }
 }

]