Я работаю с Laravel 4 и модулем mongodb 2.0.4. У меня есть класс User и Role, и я пытаюсь использовать отношение ownToMany с методами присоединения, отсоединения и синхронизации
Класс пользователя
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})
Эта проблема присутствует как с методами присоединения, так и с методами отсоединения. Только синхронизация работает корректно. Но только если есть один элемент. Если вы запускаете синхронизацию для нескольких элементов, одна из коллекций всегда остается неповрежденной из-за неправильного запроса.
Я что-то упустил или действительно есть проблема с этим отношением? Любая помощь будет здорово. Спасибо
belongsToMany()
, а другая сторонаhasMany()
. Отсутствие набора текстаObjectId
настораживает. Как и обработка преобразования списка. Я был бы заинтригован, чтобы увидеть, дает ли мой упомянутый тестовый пример аналогичный или другой результат. - person Neil Lunn   schedule 10.03.2015