返回嵌套数组laravel事件

返回嵌套数组laravel事件,laravel,Laravel,我正在尝试通过事件返回嵌套数组。但我不太确定这是怎么回事: 这是我在控制器中得到的: public function send(Request $request, Group $group){ $message = new Message([ 'user_id' => Auth::user()->id, 'group_id' => $request->groupId, 'messag

我正在尝试通过事件返回嵌套数组。但我不太确定这是怎么回事:

这是我在控制器中得到的:

public function send(Request $request, Group $group){

        $message = new Message([
            'user_id' => Auth::user()->id,
            'group_id' => $request->groupId,
            'message' => $request->message
        ]);
        $message->save();

        event(new MessageSent($message));

        return response()->json([
        "code" => 200,
        "message" => "Message successfully sent"
        ]);
        
    }
这是我在活动中得到的:

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use App\Http\Resources\Group as GroupResource;
use App\Http\Resources\Message as MessageResource;

use App\Message;
use App\User;

class MessageSent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $message;


    public function __construct(Message $message)
    {
        $this->message = $message;
        $arr = $message->toArray();
        $user = User::where('id', $this->message->user_id)->first();
        $arr['user'] = $user->toArray();

        return $arr;
    }

    public function broadcastOn()
    {
        return new Channel('group.' . $this->message->group->id);
    }

}


必须在MessageSent类中声明var,请尝试以下操作:

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use App\Http\Resources\Group as GroupResource;
use App\Http\Resources\Message as MessageResource;

use App\Message;
use App\User;

class MessageSent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $message;
    public $data;


    public function __construct(Message $message)
    {
        $this->message = $message;
        $user = User::where('id', $this->message->user_id)->first();
        $this->message->user = $user;
        $this->data= $message->toArray();

    }

    public function broadcastOn()
    {
        return new Channel('group.' . $this->message->group->id);
    }

}

这似乎是答案,我更新了帖子,请查看添加内容。它正在做我需要的事情,但它将用户作为对象返回:
“user”:对象{
这会影响吗?你应该映射你的模型,并得到这个结果,所以,这不仅仅是格式化我在前端需要的所有内容的问题,对吗?:)或者,我可以在
用户
数组中定义
\u id
?但是这似乎有点复杂,不是吗?这样尝试一下数据键,是必要的吗?那么,键将在中定义前端,不用担心。那个很简单:)
<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use App\Http\Resources\Group as GroupResource;
use App\Http\Resources\Message as MessageResource;

use App\Message;
use App\User;

class MessageSent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $message;
    public $data;


    public function __construct(Message $message)
    {
        $this->message = $message;
        $user = User::where('id', $this->message->user_id)->first();
        $this->message->user = $user;
        $this->data= $message->toArray();

    }

    public function broadcastOn()
    {
        return new Channel('group.' . $this->message->group->id);
    }

}