isset Resource içinde ilişki tanımlayamazsınız (teknik olarak böyle bir şey yapılabilir ama yapılmaması gerektiği için hiç girmiyorum); resource içinde ilişki kullanırsınız.
Mesela UserResource ve ProfileResource isimli iki resource olsun.
UserResource:
return [
'id' => $this->id,
'profile' => ProfileResource::make($this->whenLoaded('profile')),
];
// ya da profile için resource yoksa ya da kullanmayacaksanız
return [
'id' => $this->id,
'profile' => $this->whenLoaded('profile', function() {
return [
'id' => $this->profile->id,
];
}),
];
yaparsanız profile alanı sadece profile ilişkisi yüklendiğinde gelir. Yani
$user = User::find(1);
return UserResource::make($user);
/*
{
"id": 1
}
*/
$user = User::with('profile')->find(1);
return UserResource::make($user);
/*
{
"id": 1,
"profile": {
"id": 1
}
}
*/
https://laravel.com/docs/11.x/eloquent-resources
Elbette ayrı bir resource tanımlasanız da olur. Baktınız işler çok karışıyor, kod tekrarını kabullenip ayrı bir resource oluşturabilirsiniz.
Mesela elinizde zaten bir User objesi var ve siz profile ilişkisini de yüklemek istiyorsanız:
$user->load([
'profile',
])
yapabilirsiniz.
https://laravel.com/docs/11.x/eloquent-relationships#lazy-eager-loading