Laravel与mongodb属于同步

时间:2015-03-06 09:35:20

标签: mongodb laravel laravel-4

我正在使用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})

附加和分离方法都存在此问题。只有同步正确运行。但只有有一个元素。如果您在多个元素上运行同步,则由于查询错误,其中一个集合始终保持不变。

我错过了什么或这个关系真的有问题吗? 任何帮助都会很棒。谢谢

1 个答案:

答案 0 :(得分:1)

替换

$user->roles()->attach(array($role_id));

使用

$user->roles()->attach($role_id);

如果您的参数不是数组,则必须使用attach方法。 sync方法仅接受数组作为参数。 Here是对他们的一个很好的解释。希望它对你有用。