未定义 属性:App\Events\UserWalletNewTransaction::$user_id

Undefined property: App\Events\UserWalletNewTransaction::$user_id

我创建了一个名为 UserWalletNewTransaction.php 的事件并将其添加到其中:

public $transaction;

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

并且还在EventServiceProivder.php注册了它:

use App\Listeners\UserWalletNotification;

protected $listen = [
    UserWalletNewTransaction::class => [
        UserWalletNotification::class,
    ],

现在为了在控制器上触发这个事件,我编码如下:

$newTransaction = UserWalletTransaction::create(['user_id' => $user_id, 'wallet_id' => $wallet_id, 'creator_id' => $creator_id, 'amount' => $amount_add_value, 'description' => $trans_desc]);

event(new UserWalletNewTransaction($newTransaction));

然后在监听器中,UserWalletNotification.php,我尝试了:

public function handle(UserWalletNewTransaction $event) {
    $uid = $event->user_id;
    dd($uid);
}

但我收到 Undefined property: App\Events\UserWalletNewTransaction::$user_id 错误消息。

然而,如果我尝试dd($event),这个结果成功出现:

那么这里出了什么问题?如何获得 $event 中已经存在的 user_id

非常感谢你们的任何想法或建议...

尝试以下,将其添加到您的活动中 class UserWalletNewTransaction

public $transaction;
public function __construct(UserWalletTransaction $transaction)
{
    $this->transaction = $transaction;
}

并在监听器中

public function handle(UserWalletNewTransaction $event) {
    $uid = $event->transaction->user_id;
    dd($uid);
}

错误很明显,您正在尝试访问 App\Events\UserWalletNewTransaction 而不是您的 UserWalletTransaction 模型的对象上的 $user_id

您的解决方法是:

public function handle(UserWalletNewTransaction $event) {
    $uid = $event->transaction->user_id;
}

如果您使用好的 IDE,这永远不会发生在您身上,因为它已经告诉您 $eventUserWalletNewTransaction。尝试使用另一个 IDE 或可以自动完成的那个,这样你就可以更快更好地开发。