Получить запрос от контроллера в модели - Laravel - PullRequest
1 голос
/ 16 октября 2019

В моем API я использовал метод «with» для получения отношения модели родителя, и все работает отлично. Я хочу добавить атрибут в мое отношение и вернуть его в своем API, но я должен использовать запрос в моей модели.

Примерно так:

Book.php

protected $appends = ['userState'];
public function getUserStateAttribute () {
   return User::find($request->id); //request not exists here currently
}

У меня есть $ request в моем контроллере (api controller)

Controller.php

public function get(Request $request) {
   Post::with('books')->all();
}

Я считаю, что использовать статический контент для добавления в массив модели так просто, но как насчет использования запросана основе контента?

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Полагаю, вы можете использовать request() helper:

public function getUserStateAttribute () {
   return User::find(request()->get('id'));
}

Конечно, это не совсем паттерн MVC, но он может работать

0 голосов
/ 16 октября 2019

Вы хотите принять запрос в качестве параметра здесь:

public function getUserStateAttribute (Request $request) {
   return User::find($request->id);
}

Таким образом, вы можете получить к нему доступ в функции. Вам просто нужно будет всегда передавать объект Request всякий раз, когда вы вызываете эту функцию.

например, $book->getUserStateAttribute($request);

В качестве альтернативы, вы можете просто передать идентификатор, таким образом вам не всегда нужно передавать запросПримерно так:

public function getUserStateAttribute ($id) {
   return User::find($id);
}

Который вы бы назвали как:

Например, $book->getUserStateAttribute($request->id);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...