具有渴望加载的laravel的返回用户模型
此代码将返回如下所示的数据具有渴望加载的laravel的返回用户模型,laravel,eloquent,Laravel,Eloquent,此代码将返回如下所示的数据 return $data =InteractiveSession::with('messages.user')->where('exercise_id',$exercise->id)->first(); 我如何返回下面这样的数据 { "id": 1, "exercise_id": 48, "messages": [ { "id": 1,
return $data =InteractiveSession::with('messages.user')->where('exercise_id',$exercise->id)->first();
我如何返回下面这样的数据
{
"id": 1,
"exercise_id": 48,
"messages": [
{
"id": 1,
"from_user": 69,
"message": "Hi",
"interactive_session_id": 1,
"user": {
"id": 69,
"first_name": "Jobin"
}
}
]}
我有表interactivesession、message、users,使用hasmany关系
$data=InteractiveSession::with('messages.user')->where('exercise\u id',$exercise->id)->first();
$data->transform(函数($record){
$messages=$record->messages->transform(函数($message){
'id'=>$message->id,
“来自用户”=>[
'id'=>$message->user->id,
'first_name'=>$message->user->first_name
],
'message'=>$message->message,
'交互式会话\u id'=>$message->交互式会话\u id
});
返回[
'id'=>$record->id,
'exercise\u id'=>$record->exercise\u id,
'messages'=>$messages
];
});
您可以创建从用户到用户模型的关系,然后执行返回$data=InteractiveSession::with(['messages.user','fromUser'])->where('exercise\u id',$exercise->id)->first()
(记住fromUser
应该是您的关系名)这似乎更难,代码也更多,,,还有其他方法吗?@helloworld您可以使用循环,但代码会更长。我认为这是你能做的最短的,考虑到你正在使用雄辩和渴望加载。为什么?您可以通过Laravel方式访问数据,$data->messages->first()->user->first\u name如果您知道您将需要这些信息,请不要这样做,如果您处于循环中,请更加小心。。。是为什么不。。。
{
"id": 1,
"exercise_id": 48,
"messages": [
{
"id": 1,
"from_user":{
"id": 69,
"first_name": "Jobin"
},
"message": "Hi",
"interactive_session_id": 1,
}
]}