使用Yii2 webzop/yii2-notifications无法给指定user_id发送通知
解决Yii2-notifications发送通知时user_id始终为0的问题
检查并修改AccountNotification类
该扩展的通知类需要自行处理接收用户的ID赋值。你可以在AccountNotification类中添加逻辑,从传入的user参数中提取ID并赋值给user_id字段:class AccountNotification extends \webzop\notifications\Notification { const KEY_RESET_PASSWORD = 'reset_password'; // 声明user_id属性,对应数据库表字段 public $user_id; public function init() { parent::init(); // 从传入的data中获取user模型,设置user_id if (isset($this->data['user'])) { $this->user_id = $this->data['user']->id; } } }手动指定user_id(快速临时方案)
若不想修改通知类,可在发送前直接给通知实例赋值user_id:$user = User::findOne(123); $notification = AccountNotification::create(AccountNotification::KEY_RESET_PASSWORD, ['user' => $user]); $notification->user_id = $user->id; // 显式设置目标用户ID $notification->send();验证表结构与扩展配置
确认数据库notifications表的user_id字段未被设置为默认0且允许非零值,同时检查扩展的配置文件中是否有强制覆盖user_id的逻辑。
内容的提问来源于stack exchange,提问作者Phemelo Khetho
相关产品推荐
相关产品推荐

