public function toUser ($model) {
return (new \App\Http\Resources\v1\User\RouteResource($model))->resolve();
}
public function toDriver ($model) {
return (new \App\Http\Resources\v1\Driver\RouteResource($model))->resolve();
}
}
логика в ApiMessage? а она унаследована от ShouldBroadcast?
имплементируется, ага <?php namespace App\Events\Messages; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Database\Eloquent\Model; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\DB; class ApiMessage implements ShouldBroadcast { use InteractsWithSockets, SerializesModels; public function __construct ( protected ?Model $model, protected string $name, protected array $channels, protected string $method, protected string $timezone ) { } public function broadcastOn () { $this->timezone(); $channels = []; foreach ($this->channels as $channel) { $channels[] = new PrivateChannel($channel); } return $channels; } public function broadcastAs () { return $this->name; } public function broadcastWith () { if (is_callable([$this, $this->method])) { return call_user_func_array([$this, $this->method], [$this->model]); } return []; } private function timezone () { date_default_timezone_set($this->timezone); DB::update("SET time_zone=?", [$this->timezone]); $this->model?->refresh(); } } таймзону не обращай внимания. смысл простой, весь набор broadcastOn/broadcastAs/broadcastWith делает ApiMessage. в него данные присылает листенер (сабскрайбер в моём случае)
глаза слязаться. ну ок
кому что ) у меня пальцы стачиваются писать кучу одинаковых файлов с разницей в одну строчку. проще один раз подготовить
потом и получается связанность сильная.
Обсуждают сегодня