ларе, засидил юзеров в БД и хочу вернуть из контроллера текущего залогиненного юзера, но вернуть через Resource.
Создал UserResource, который просто маппит поля юзера в toArray(), возвращаю из контроллера return new UserResource($user); и получаю ошибку
Trying to get property 'first_name' of non-object
При этом надо понимать, что модель юзера правильная. Заглянул через xdebug внутрь ресурса и удивился. $this->resource внутри UserResource::toArray() содержит json, а не модель юзера, т.е. в toArray() я не могу получить модель юзера и как-либо её отформатировать.
До этого уже тысячу раз писал ресурсы и все было окей. Это какой-то новый прикол 8 лары, о котором нигде в доке не сказано? Как с этим быть?
а модель юзера как берёшь? правильнее было б передавать auth()->user()
покажи код контролера
public function index(Request $request) { /** @var User $user */ $user = $request->user(); return new UserResource($user); }
а теперь UserResource код
class UserResource extends JsonResource { public function toArray($request) { /** @var User $this */ return [ 'first_name' => $this->first_name, 'last_name' => $this->last_name, 'email_verified_at' => $this->email_verified_at, ]; } }
a $request->user() точно модельку возвращает? может уже он строку тебе пихает в ресурс?
Обсуждают сегодня