Laravel 5.8: 传递给事件侦听器的参数正在变为空
Laravel 5.8: Parameter passed to the event listener is getting null
我创建了一个名为 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));
然后在 Listener UserWalletNotification.php
,我尝试了:
public function handle(UserWalletNewTransaction $event) {
dd($event->transaction);
}
但它 returns null
不知何故。
但是如果我 dd($event)
相反,我会得到这个:
那么这里出了什么问题?我可以在 user_wallet_transactions
处正确插入新记录,变量 $newTransaction
应该包含 transaction
信息,但它不是。
这也是模特UserWalletTransaction.php
:
protected $fillable = ['user_id','wallet_id','amount','description','creator_id'];
protected $table = 'user_wallet_transactions';
非常感谢你们对此的任何想法或建议...
提前致谢。
更新 #1:
如果我在 event()
之前在控制器上执行 dd($newTransaction)
,我会得到:
更新 #2:
这里是活动的完整代码,UserWalletNewTransaction.php
:
class UserWalletNewTransaction
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public $transaction;
public function __construct($transaction)
{
$this->$transaction = $transaction;
}
}
更新#3:
这是 dd($event)
在侦听器上的完整结果:
App\Events\UserWalletNewTransaction {#2533 ▼
+newTransaction: null
+socket: null
+"{"user_id":"373","wallet_id":"2","creator_id":2,"amount":"-60","description":null,"updated_at":"2021-07-18 13:33:59","created_at":"2021-07-18 13:33:59","id":61}": App\UserWalletTransaction {#2535 ▼
#fillable: array:5 [▼
0 => "user_id"
1 => "wallet_id"
2 => "amount"
3 => "description"
4 => "creator_id"
]
#table: "user_wallet_transactions"
#connection: "mysql"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: true
#attributes: array:8 [▼
"user_id" => "373"
"wallet_id" => "2"
"creator_id" => 2
"amount" => "-60"
"description" => null
"updated_at" => "2021-07-18 13:33:59"
"created_at" => "2021-07-18 13:33:59"
"id" => 61
]
#original: array:8 [▼
"user_id" => "373"
"wallet_id" => "2"
"creator_id" => 2
"amount" => "-60"
"description" => null
"updated_at" => "2021-07-18 13:33:59"
"created_at" => "2021-07-18 13:33:59"
"id" => 61
]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [▼
0 => "*"
]
}
}
我刚刚弄清楚了问题...你在 $this->$transaction
而它应该是 $this->transaction
。
我也遇到了这个问题,如果是这样的话:去掉事件属性中的下划线。 ($_order 必须是 $order)
我创建了一个名为 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));
然后在 Listener UserWalletNotification.php
,我尝试了:
public function handle(UserWalletNewTransaction $event) {
dd($event->transaction);
}
但它 returns null
不知何故。
但是如果我 dd($event)
相反,我会得到这个:
那么这里出了什么问题?我可以在 user_wallet_transactions
处正确插入新记录,变量 $newTransaction
应该包含 transaction
信息,但它不是。
这也是模特UserWalletTransaction.php
:
protected $fillable = ['user_id','wallet_id','amount','description','creator_id'];
protected $table = 'user_wallet_transactions';
非常感谢你们对此的任何想法或建议...
提前致谢。
更新 #1:
如果我在 event()
之前在控制器上执行 dd($newTransaction)
,我会得到:
更新 #2:
这里是活动的完整代码,UserWalletNewTransaction.php
:
class UserWalletNewTransaction
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public $transaction;
public function __construct($transaction)
{
$this->$transaction = $transaction;
}
}
更新#3:
这是 dd($event)
在侦听器上的完整结果:
App\Events\UserWalletNewTransaction {#2533 ▼
+newTransaction: null
+socket: null
+"{"user_id":"373","wallet_id":"2","creator_id":2,"amount":"-60","description":null,"updated_at":"2021-07-18 13:33:59","created_at":"2021-07-18 13:33:59","id":61}": App\UserWalletTransaction {#2535 ▼
#fillable: array:5 [▼
0 => "user_id"
1 => "wallet_id"
2 => "amount"
3 => "description"
4 => "creator_id"
]
#table: "user_wallet_transactions"
#connection: "mysql"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: true
#attributes: array:8 [▼
"user_id" => "373"
"wallet_id" => "2"
"creator_id" => 2
"amount" => "-60"
"description" => null
"updated_at" => "2021-07-18 13:33:59"
"created_at" => "2021-07-18 13:33:59"
"id" => 61
]
#original: array:8 [▼
"user_id" => "373"
"wallet_id" => "2"
"creator_id" => 2
"amount" => "-60"
"description" => null
"updated_at" => "2021-07-18 13:33:59"
"created_at" => "2021-07-18 13:33:59"
"id" => 61
]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [▼
0 => "*"
]
}
}
我刚刚弄清楚了问题...你在 $this->$transaction
而它应该是 $this->transaction
。
我也遇到了这个问题,如果是这样的话:去掉事件属性中的下划线。 ($_order 必须是 $order)