Как заполнить поле идентификатора пользователя авторизованным пользователем при создании ресурса? - PullRequest
0 голосов
/ 18 сентября 2018

Я уверен, что должен быть очень простой способ сделать это - я хотел бы заполнить поле user_id на моем ресурсе идентифицированным идентификатором пользователя всякий раз, когда создается новый экземпляр ресурса.

В методе store () моей модели ресурсов у меня есть:

public function store(Request $request)
{
    $input = $request->all();
    $resource = Resource::create($input);
    $resource->user_id = Auth::user()->id;
    return $resource;

    return 'Resource added.';
}

Это работает через маршрут API после публикации, однако всякий раз, когда я добавляю новый экземпляр ресурса через инструментальную панель Nova, он не добавляет идентификатор пользователя Auth.,Я предполагаю это, потому что Nova не использует тот контроллер ресурсов, который я установил?

Буду признателен за предложения!

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Я еще не использовал Nova, но, так как он также laravel и, скорее всего, Eloquent ORM, я могу сказать следующее:

В этих двух строках вы установили user_id, но вы не сделалисохранил изменение:

$resource->user_id = Auth::user()->id;
return $resource;

Вы должны добавить эту строку, чтобы сохранить сделанные вами изменения:

$resource->save();

В качестве альтернативы вы можете добавить значение уже в $input.массив:

$input = $request->all();
$input["user_id"] = Auth::user()->id;
$resource = Resource::create($input);
0 голосов
/ 18 сентября 2018

Я только что создал ResourceObserver.Сохраненный Auth () -> user-> id с созданным методом.

Зарегистрированный ResourceObserver для AppServiceProvider и NovaServiceProvider.

https://laravel.com/docs/5.7/eloquent#observers

https://nova.laravel.com/docs/1.0/resources/#resource-events

0 голосов
/ 18 сентября 2018

Работая в предположении, что у вас есть метод отношений User::resources(), должно работать следующее:

return $request->user()->resources()->create($request->all());

То, как у вас это работает, не работает, потому что вы не сохранили ресурс после того, как связали пользователя сэто.

...