我正在使用Laravel 4和mongodb 2.0.4 module 我有User和Role类,我试图使用belongsToMany关系与attach,detach和sync方法
用户类
public function roles()
{
return $this->belongsToMany('Role', null, 'user_ids', 'role_ids');
}
角色等级
public function users()
{
return $this->belongsToMany('User', null, 'role_ids', 'user_ids'
}
当我运行附加方法
时$user = User::find($id);
$user->roles()->attach(array($role_id));
mongodb生成一个查询错误(或没有?)
user.update({"_id":{"$id":"54f8d7802228d5e42b000036"}},{"$addToSet":{"role_ds":{"$each":["54f8d7b02228d5e42b000037"]}}},{"multiple":true})
role.update({"_id":["54f8d7b02228d5e42b000037"]},{"$addToSet":{"user_ids":{"$each":["54f8d7802228d5e42b000036"]}}},{"multiple":true})
用户集合已更新,但角色收集保持不变。 它应该生成这样的查询吗?
role.update({"_id":{"$id":"54f8d7b02228d5e42b000037"}},{"$addToSet":{"user_ids":{"$each":["54f8d7802228d5e42b000036"]}}},{"multiple":true})
附加和分离方法都存在此问题。只有同步正确运行。但只有有一个元素。如果您在多个元素上运行同步,则由于查询错误,其中一个集合始终保持不变。
我错过了什么或这个关系真的有问题吗? 任何帮助都会很棒。谢谢
答案 0 :(得分:1)
替换
$user->roles()->attach(array($role_id));
使用
$user->roles()->attach($role_id);
如果您的参数不是数组,则必须使用attach
方法。 sync
方法仅接受数组作为参数。 Here是对他们的一个很好的解释。希望它对你有用。