具有渴望加载的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, 
    }
]}