laravel 8 API:如何传递用户名,Auth作为存储帖子的user_id值



我正在用Laravel 8构建一个API。

我有一个包含以下列的posts表:

id
category_id
user_id
title
body
picture
study_time
likes
tags

当用户以作者或管理员身份登录时,他们可以添加新帖子。

对于user_id字段,我想使该字段受到保护,我想用JWTAuth::user()->username显示username,并将其注册到user_id列。。所以没有人可以为它输入任何值

编辑:当我发送请求时,它会给我这个错误:SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into posts

这是我在PostController中的存储方法:

$data = $request->all();
$validator = Validator::make($data, [
'category_id' => 'required',
'title' => 'required|max:100|unique:categories',
'body' => 'required',
'picture' => 'required',
'study_time' => 'required',
'tags' => 'null|string',
]);
if ($validator->fails()) {
return response(['error' => $validator->errors(), 'Validation Error']);
}
$tags = explode(",", $request->tags);
$post = Post::create($data);
$post->tag($tags);
return response()->json([
'username' => JWTAuth::user()->username,
'post' => $post
], 201);

将其添加到$data=$request->all((:

$data['user_id'] = JWTAuth::user()->id;

或者你可以使用这个(如果你在用户模型中定义帖子(:

JWTAuth::user()->posts()->create($data);

您可以使用$request->user()获取当前用户。

$post = Post::create($data);
$post->tag($tags);
$post->username => JWTAuth::user()->username
return response()->json([
'post' => $post
], 201);

相关内容

  • 没有找到相关文章

最新更新