Я следовал учебному пособию, чтобы Laravel транслировался в режиме реального времени, но застрял через несколько минут. Laravel выдает мне следующее сообщение: « Аргумент 1, передаваемый в Illuminate \ Database \ Grammar :: parameterize (), должен иметь тип массива, заданный целым числом, вызываемый в / home / vagrant / code / vendor / laravel / framework / src / Illuminate / Database / Query / Grammars / Grammar.php в строке 775"
Я несколько раз пытался повторить урок, чтобы убедиться, что ничего не пропустил, но проблема остается той же после нескольких попыток.
Даже проверка трассировки стека и документации не дали мне никакой подсказки.
Я раскомментировал следующую строку в config/app.php
:
App\Providers\BroadcastServiceProvider::class,
Я добавил следующие строки в App\Providers\EventServiceProvider
:
use App\Events\RideCreated;
use App\Listeners\RideCreatedListener;
и следующие после protected $listen = [
в том же файле
RideCreated::class => [
RideCreatedListener::class,
],
это настройка маршрута, используемого для тестирования (web.php
):
Route::get('/test', function(){
event(new RideCreated());
return "test";
});
и вот как RideCreated.php
выглядит так:
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class RideCreated implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new Channel('RideCreated');
}
}
слушатель (RideCreatedListener.php
) выглядит так:
<?php
namespace App\Listeners;
use App\Events\RideCreated;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class RideCreatedListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param RideCreated $event
* @return void
*/
public function handle(RideCreated $event)
{
//
}
}
Я ожидал, что при посещении / test маршрутов, чтобы увидеть тест на экране, но на самом деле получил сообщение об ошибке.
моей первой мыслью было, что реализация ShouldBroadcast
в RideCreated.php
как-то вызывает проблему, так как удаление implement ShouldBroadcast
делает ошибку исчезающей. единственная проблема заключается в том, что удалить его нельзя, так как он необходим для работы Pusher.