簡體   English   中英

Laravel 8:attach() 似乎不起作用

[英]Laravel 8: attach() does not seem to be working

我想為每個注冊了新帳戶的用戶添加一個新角色。 所以在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附加到 pivot 表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();
        });
    }

那么這里出了什么問題呢? 我該如何解決這個問題?

我真的很感激你們的任何想法或建議......

提前致謝。

你是說return User::create([在方法的第一行,同時使用 $user 變量進行附加。將其更改為$user = User::create([

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM