Array_merge (): Ожидаемый параметр 1 будет массивом, объектом, заданным при использовании коллекции в качестве параметра события

Сейчас я использую Laravel 8.26 и Pusher 4.1.

Это мое мероприятие:

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

    public $fields;

    public function __construct($fields)
    {
        $this->fields = $fields->toArray();
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        // return new PrivateChannel('notif-seller.'.$this->fields->seller_id);
        return new PrivateChannel('notif-seller.'.$this->fields->seller_id);
    }

    public function broadcastWith()
    {
        $message = $this->fields;
        return $message;
    }
}

А это мой контроллер:


        $t = new Transaksi();
        $t->item_id = $request->item_id;
        $t->seller_id = $request->seller_id;
        $t->buyer_id = $request->buyer_id;
        $t->category = 'merchandise';
        $t->amount = $request->amount;
        $t->save();
        
        event(new NotifSeller($t));
        return redirect()->back()->with('status', 'Success');

и он покажет сообщение об ошибке

array_merge(): Expected parameter 1 to be an array, object given

У меня здесь неправильный код? Я проверил так много учебников, в их учебниках они могут использовать коллекцию в качестве параметра события, но когда я попробовал это, оказалось, что это так.

Извините, если я плохо говорю по-английски, я не являюсь носителем английского языка, и я впервые задаю вопрос о переполнении стека, поэтому я надеюсь, что вы это понимаете. Заранее спасибо.

Спасибо за предложение редактирования @Andrew

warangkaer 30.03.2021 08:33

вы пробовали обернуть $ t массивом? массив ($ t)

Psycho 30.03.2021 09:16

Да. Я попытался обернуть его массивом ($ t), но это не сработало. когда я 'dd (array ($ t))', он преобразован как массив, и я реализовал его в коде. но сообщение об ошибке такое же, как и раньше.

warangkaer 30.03.2021 09:51

Можете ли вы показать результат dd (array ($ t))?

Kieu Trung 30.03.2021 09:53

затем попробуйте добавить пустой массив $ data = []; перед $ t, а затем сохраните все в $ data вместо объекта $ t, например $ data-> item_id = $ request-> item_id; и так далее

Psycho 30.03.2021 09:55

@Psycho превращается в многомерный массив, и я все еще получаю сообщение об ошибке array_merge (): Ожидаемый параметр 1 будет массивом, заданным объектом

warangkaer 30.03.2021 10:07

это правильно? i.stack.imgur.com/X8UWm.png

warangkaer 30.03.2021 10:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
7
44
1

Ответы 1

Скорее всего, потому что вы используете SerializesModels, Laravel пытается сериализовать вашу опору public $fields;, потому что она содержит модель.

Различные возможные решения:

  • Попробуйте ввести опору public array $fields;
  • Сохраните туда всю модель public Transaksi $fields;
  • Удаление признака SerializesModels, технически не требуется.

спасибо за ответ, но это не решает ошибку.

warangkaer 30.03.2021 10:47

Другие вопросы по теме