我确信必须有一个非常简单的方法 - 每当创建新的资源实例时,我想用经过身份验证的用户的id填充我的资源上的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用户ID . 我猜这是因为Nova没有使用我已经列出的资源控制器?
我很感激建议!
3 回答
假设您有关系方法
User::resources()
,以下工作应该有效:您拥有它的方式不起作用,因为您在将用户与其关联后未保存资源 .
我还没有使用过Nova,但由于它也是laravel,很可能是Eloquent ORM,我可以告诉以下内容 .
在这两行中你设置了
user_id
,但你没有坚持改变:您应该添加此行以保存您已完成的更改:
作为替代方案,您可以将值添加到
$input
数组中:我刚刚创建了一个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