gpt4 book ai didi

php - Laravel belongsToMany 只能以一种方式工作

转载 作者:行者123 更新时间:2023-11-29 02:50:34 29 4
gpt4 key购买 nike

我试图建立多对多的关系,在这个例子中是用户和角色。

在用户模型中我得到了这个:

public function roles()
{
return $this->belongsToMany('App\Role', 'user_role', 'user_id', 'role_id');
}

在角色模型中我得到了这个:

public function users()
{
return $this->belongsToMany('App\User', 'user_role', 'role_id', 'user_id');
}

还有我的数据透视表 user_role:

public function up()
{
Schema::create('user_role', function(Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('role_id')->unsigned();
$table->timestamps();

$table->foreign('role_id')->references('id')->on('roles');
$table->foreign('user_id')->references('id')->on('users');
});
}

现在,当我执行 $user->roles()->attach(1); 时,它会在 user_role 表中生成一行。但问题是当我想访问它时:$user->roles; 它什么都不返回。它适用于 $role->users; 但不是其他方式。我做错了什么?

最佳答案

已解决:Laravel 5.2.29

确保表名是role_user

    $user = User::find(1);
$role = Role::find(2);
// In this example I am passing in a Role object but $role->id also works
$user->roles()->attach($role);

希望这对你有用。

关于php - Laravel belongsToMany 只能以一种方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36531759/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com