Сейчас я использую 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
У меня здесь неправильный код? Я проверил так много учебников, в их учебниках они могут использовать коллекцию в качестве параметра события, но когда я попробовал это, оказалось, что это так.
Извините, если я плохо говорю по-английски, я не являюсь носителем английского языка, и я впервые задаю вопрос о переполнении стека, поэтому я надеюсь, что вы это понимаете. Заранее спасибо.
вы пробовали обернуть $ t массивом? массив ($ t)
Да. Я попытался обернуть его массивом ($ t), но это не сработало. когда я 'dd (array ($ t))', он преобразован как массив, и я реализовал его в коде. но сообщение об ошибке такое же, как и раньше.
Можете ли вы показать результат dd (array ($ t))?
затем попробуйте добавить пустой массив $ data = []; перед $ t, а затем сохраните все в $ data вместо объекта $ t, например $ data-> item_id = $ request-> item_id; и так далее
@Psycho превращается в многомерный массив, и я все еще получаю сообщение об ошибке array_merge (): Ожидаемый параметр 1 будет массивом, заданным объектом
это правильно? i.stack.imgur.com/X8UWm.png






Скорее всего, потому что вы используете SerializesModels, Laravel пытается сериализовать вашу опору public $fields;, потому что она содержит модель.
Различные возможные решения:
public array $fields;public Transaksi $fields;SerializesModels, технически не требуется.спасибо за ответ, но это не решает ошибку.
Спасибо за предложение редактирования @Andrew