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

Laravel中如何获取创建新用户的用户ID并存入supervised_by字段

实现创建新用户时自动存入创建者ID到supervised_by字段

我有一个users数据表,其中包含supervised_by字段,希望将创建新用户的用户ID存入该字段。例如:当管理员创建用户时,将管理员的ID存入该新用户的supervised_by字段中。

修正迁移文件

原迁移文件中supervised_by字段的定义存在格式问题,需调整为支持外键约束的正确写法,同时允许字段为null(系统首个用户如超级管理员无创建者):

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->boolean('verified')->default(false);
        $table->timestamp('verified_at')->nullable();
        $table->string('password');
        $table->string('is_verified');
        $table->boolean('active')->nullable();
        // 修正字段类型与外键约束
        $table->unsignedBigInteger('supervised_by')->nullable();
        $table->foreign('supervised_by')->references('id')->on('users');
        $table->rememberToken();
        $table->timestamps();
        $table->softDeletes();
    });
}

修改User控制器代码

在创建新用户的逻辑中,获取当前登录用户(即创建者)的ID,直接存入supervised_by字段:

public function register(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name' => 'required|max:180',
        'email' => 'required|email|unique:users',
        'password' => 'required|max:15|min:8',
        // 根据业务需求决定是否开启role字段验证
        // 'role' => 'required'
    ]);

    if ($validator->fails()) {
        return response()->json([
            'validation_errors' => $validator->messages(),
        ]);
    }

    $user = User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => Hash::make($request->password), // 注意:密码必须加密存储
        'verified' => false,
        'role' => $request->role,
        'supervised_by' => auth()->id() // 存入当前登录用户的ID
    ]);

    return response()->json([
        'status' => 200,
        'code' => 'register',
        'message' => '注册成功!待审核通过后即可登录。',
        'data' => null,
        'error' => null,
    ]);
}

关键提醒

  • 需确保该接口仅允许已登录用户访问,可通过auth:api或web中间件限制未登录请求。
  • 原代码中直接存储明文密码存在安全风险,必须通过Hash::make()加密后再存入数据库。

内容的提问来源于stack exchange,提问作者Zenis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:40:39