В приложении laravel 6 у меня есть коллекция ресурсов, которая работает нормально для меня:
class UserSkillCollection extends ResourceCollection
{
public static $wrap = 'user_skills';
public function toArray($request)
{
return $this->collection->transform(function($userSkill){
return [
'id' => $userSkill->id,
'user_id' => $userSkill->user_id,
'user_name' => $userSkill->user_name,
'skill_id' => $userSkill->skill_id,
'skill_name' => $userSkill->skill_name,
'rating' => $userSkill->rating,
'created_at' => $userSkill->created_at,
];
});
}
, за исключением случаев, когда определены некоторые поля, например, user_name, у меня есть ключи с нулевыми значениями.
Чтобы избавиться от них, я пытался использовать whenLoaded, но со строкой:
'user_id' => $this->whenLoaded('user_id'),
Я получил ошибку:
"message": "Method Illuminate\\Support\\Collection::relationLoaded does not exist.",
Какой способ действителен?
ИЗМЕНЕНО: Я добавил отношения в моделях и сделал:
'user' => $userSkill->whenLoaded('user'),
или
'user' => $this->whenLoaded('user'),
Я получил ошибку:
Call to undefined method App\UserSkill::whenLoaded(
I Предположим, эта ошибка, как я ее называю из коллекции. Как правильно?
Спасибо!