Egg*_*654 5 php mysql migration roles laravel
我想从我的分配给用户的角色users
和roles
表在一个名为'role_users'新表。
角色.php模型
class Role extends Model{
public function users(){
return $this->belongsToMany('App\User','role_users', 'role_id', 'user_id');
}
}
Run Code Online (Sandbox Code Playgroud)
User.php 模型
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
public function roles(){
return $this->belongsToMany('App\Role', 'role_users', 'user_id', 'role_id');
}
}
Run Code Online (Sandbox Code Playgroud)
我不断从我的AccountController.php收到这一行中的错误
$roleuser = new User;
$user_superadmin = Role::where('role_desc', 'Superadmin')->first();
$roleuser->roles()->attach($user_superadmin); /*this line specifically*/
Run Code Online (Sandbox Code Playgroud)
我有Integrity constraint violation: 1048 Column 'user_id' cannot be null (SQL: insert into 'role_users' ('role_id', 'user_id') values (1, ))
. 在users table
已经更新,user_id
已经被保存到数据库。
有人能帮我吗?我一定忽略了一些重要的东西。
这里的问题是您没有将角色附加到任何现有用户,您只需运行:
$roleuser = new User;
Run Code Online (Sandbox Code Playgroud)
创建不保存到数据库的用户对象。
你应该做这样的事情:
$roleuser = User::find(1); // find user with id 1
$user_superadmin = Role::where('role_desc', 'Superadmin')->first();
$roleuser->roles()->attach($user_superadmin); /*this line specifically*/
Run Code Online (Sandbox Code Playgroud)
或者
$roleuser = User::create(['name' => 'Sample user']); // create sample user
$user_superadmin = Role::where('role_desc', 'Superadmin')->first();
$roleuser->roles()->attach($user_superadmin); /*this line specifically*/
Run Code Online (Sandbox Code Playgroud)
你也不应该$roleuser
在这里使用变量,因为它显然是$user
归档时间: |
|
查看次数: |
5768 次 |
最近记录: |