在Laravel中创建新记录时,我无法获得关系数据



我基本上试图在我的数据库中保存评论,所以当创建新评论时,我想要一个新创建的带有用户详细信息的评论对象,但我不知道如何做到这一点。这里是控制器中的存储方法

public function store(Request $request)
{
$request->validate([
'comment' => 'required|string',
]);
$comment = Comment::create([
'ticket_id' => $request->ticket_id,
'user_id' => auth()->user()->id,
'comment' => $request->comment,
]);
return response()->json($comment);
}

反应

{
"ticket_id": 19,
"user_id": 1,
"comment": "dummy comment",
"updated_at": "2022-07-16T12:32:31.000000Z",
"created_at": "2022-07-16T12:32:31.000000Z",
"id": 33
}

注释模型

public function user()
{
return $this->hasOne(User::class, 'id', 'user_id');
}

期待结果

{
"id": 26,
"comment": "new commnet",
"ticket_id": 19,
"user_id": 1,
"created_at": "2022-07-16T12:16:19.000000Z",
"updated_at": "2022-07-16T12:16:19.000000Z",
"user": {
"id": 1,
"name": "admin",
"email": "admin@localhost",
"email_verified_at": null,
"created_at": "2022-07-16T08:35:04.000000Z",
"updated_at": "2022-07-16T08:35:04.000000Z",
}
}

注释模型

public function user(){
return $this->belongsTo(User::class,'user_id');
}

获取用户评论

$comments = Comment::with('user')->get();

编辑

如果你想在创建

时直接使用user对象如果用户是我

$comment = Comment::create([
'ticket_id' => $request->ticket_id,
'user_id' => auth()->user()->id,
'comment' => $request->comment,
]);
$comment['user'] = auth()->user();
return response()->json($comment);

去年编辑<的工作/em>

return response()->json($comment->load('user'));

最新更新