返回嵌套数组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);
}
}