我正在用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);