Laravel 4从多对多关系中摧毁一条记录

时间:2014-09-12 06:57:49

标签: laravel-4 eloquent

我已经做了很多次但是出于某种原因我似乎无法让这次工作。我有用户,他们有权限。我有权限表,用户表和users_permissions表。 users_permissions表包含来自users表的一系列id和来自权限表的一系列权限ID。例如:
1,1 1,2 1,3 2,1 2,3 等等...基本上,我做了一个

$up = UserPermissions::where('user_id','=',$userid)->where('permission_id','=',$permissionid)->first();
$up->delete();

这样就可以了,但我可以执行$ up-> delete(),因为记录没有ID。有没有办法在不修改表的情况下执行此操作?谢谢!

Nick

1 个答案:

答案 0 :(得分:0)

假设您的关系已正确定义:

User.php

class User extends Eloquent
{
    public function permissions()
    {
        return $this->belongsToMany('UserPermission');
    }
}

UserPermission.php

class UserPermission extends Eloquent
{
    public function users()
    {
        return $this->belongsToMany('User');
    }
}

要从ID为$ userid的用户中删除ID为$ permissionid的权限,您只需要

User::find($userid)->permissions()->detach($permissionid);

删除ID为$ userid

的用户的所有权限
User::find($userid)->permissions()->detach();