【问题标题】:Laravel 8: attach() does not seem to be workingLaravel 8:attach() 似乎不起作用
【发布时间】:2021-07-19 12:03:27
【问题描述】:

我想为每个注册了新帐户的用户添加一个新角色。所以在RegisterController.php,我添加了这个:

protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

        $role = Role::where('name', 'manual user')->first();

        $user->roles()->attach($role->id);

        return $user;
    }

我已经在roles 表中拥有名为manual user 的行:

但现在的问题是,每当我尝试注册新用户时,它都不会将 $role->id 附加到数据透视表 role_user 表!!

请注意,我还添加了这些关系:

User.php:

public function roles()
    {
        return $this->belongsToMany(Role::class);
    }

Role.php:

public function users()
    {
        return $this->belongsToMany(User::class);
    }

role_user 表的迁移是这样的:

public function up()
    {
        Schema::create('role_user', function (Blueprint $table) {
            $table->unsignedBigInteger('user_id');
            $table->unsignedBigInteger('role_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
            $table->timestamps();
        });
    }

那么这里出了什么问题?我该如何解决这个问题?

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

提前致谢。

【问题讨论】:

  • 您在使用$user 变量进行附加时说return User::create([。将其更改为$user = User::create([
  • @POOYAA 哎呀,你说得对!

标签: php laravel laravel-8


【解决方案1】:

您在方法的第一行说return User::create([,同时使用 $user 变量进行附加。改成$user = User::create([

【讨论】:

    猜你喜欢
    • 2019-10-04
    • 2021-09-27
    • 2021-07-24
    • 2019-03-28
    • 2020-04-05
    • 2017-12-12
    • 1970-01-01
    • 2018-02-04
    • 2021-09-15
    相关资源
    最近更新 更多