Size: a a a

Laravel для начинающих

2020 February 29

ma

mr. angeluss in Laravel для начинающих
👍
источник

AW

Andrei Work in Laravel для начинающих
public function index()
   {
       $data = Project::all();
       return new ProjectResource($data);
   }

   public function toArray($request)
   {
       return [
           'id' => $this->id,
           'name' => $this->name
       ];
   }

  Получаю ошибку Property [id] does not exist on this collection instance.
  Подскажите, не могу понять, что не так. Модель содержит id )
источник

МК

Максим Кавецкий in Laravel для начинающих
mr. angeluss
Всем привет. подскажите плз: Есть модель, в ней есть некое поле hash.
Есть, допустим, некая функция SomeHelper::deccode_hash($hash);
Есть ли возможность делать SomeHelper::deccode_hash($model->hash) каждый раз, когда данные достаются из БД? ну, что-то вроде:

public function afterFind ()
{
   SomeHelper::deccode_hash($this->hash);
}

в самой модели.

ИЛи это только с переопределением стандартного find() ?
оу, а разве hash можно декодировать?
источник

ma

mr. angeluss in Laravel для начинающих
в моем случае да) и это не совсем хэш) долго объяснять, что эт ои почему можно. ДА и дороговато (НДА, все дела:) )
источник

ma

mr. angeluss in Laravel для начинающих
Andrei Work
public function index()
   {
       $data = Project::all();
       return new ProjectResource($data);
   }

   public function toArray($request)
   {
       return [
           'id' => $this->id,
           'name' => $this->name
       ];
   }

  Получаю ошибку Property [id] does not exist on this collection instance.
  Подскажите, не могу понять, что не так. Модель содержит id )
а где ты все это пишешь?
источник

AW

Andrei Work in Laravel для начинающих
mr. angeluss
а где ты все это пишешь?
index это апи контроллер,  toArray - ресурсный
источник

МК

Максим Кавецкий in Laravel для начинающих
mr. angeluss
в моем случае да) и это не совсем хэш) долго объяснять, что эт ои почему можно. ДА и дороговато (НДА, все дела:) )
Это типа самописная штука, но не хэш функция, а какой-то алгоритм зашифрования/декодирования?
источник

ma

mr. angeluss in Laravel для начинающих
Andrei Work
index это апи контроллер,  toArray - ресурсный
ну так тогда $this у тебя не модель, которая содержит ID, а ресурсный котнроллер)
источник

ma

mr. angeluss in Laravel для начинающих
Максим Кавецкий
Это типа самописная штука, но не хэш функция, а какой-то алгоритм зашифрования/декодирования?
да, именно так) вопрос был лишь в том, чтобы декодировать сразу при извлечении, обезопасив последующих разрабов от проблем)
источник

AW

Andrei Work in Laravel для начинающих
mr. angeluss
ну так тогда $this у тебя не модель, которая содержит ID, а ресурсный котнроллер)
мм, что необхоимо изменить, я же передаю дата с полем?
источник

ma

mr. angeluss in Laravel для начинающих
Andrei Work
мм, что необхоимо изменить, я же передаю дата с полем?
я точно не уверен, но как минимум попробуй вместо $this->id написать $request->id
источник

ma

mr. angeluss in Laravel для начинающих
конечно, если имеется в виду, что $request -  это айтем из коллекции $data :)
источник

AW

Andrei Work in Laravel для начинающих
mr. angeluss
конечно, если имеется в виду, что $request -  это айтем из коллекции $data :)
{"data":{"id":null,"name":null}} получаю нул
источник

ma

mr. angeluss in Laravel для начинающих
Стоп. А конструктор Ресурсного котнроллера как выглядит?
источник

AW

Andrei Work in Laravel для начинающих
подключаю так
источник

AW

Andrei Work in Laravel для начинающих
use App\Http\Resources\Project as ProjectResource;
источник

ma

mr. angeluss in Laravel для начинающих
да и вообще, если это ларавелевский Реквест, то он сам по себе работает $request->toArray()
источник

ma

mr. angeluss in Laravel для начинающих
new ProjectResource($data); - эта запись означает, что ты создаешь новый объект, в конструктор которого передаешь $data, а это коллекция.
Где и как ты вызываешь этот твой toArray() ?
источник

AW

Andrei Work in Laravel для начинающих
mr. angeluss
new ProjectResource($data); - эта запись означает, что ты создаешь новый объект, в конструктор которого передаешь $data, а это коллекция.
Где и как ты вызываешь этот твой toArray() ?
return new ProjectResource($data);
источник

AW

Andrei Work in Laravel для начинающих
если же отдать один элемент return new ProjectResource(Project::find(1)); то работает
источник