You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:16:02