Работя с Laravel 4 и монгодб 2.0.4 модул Имам потребителски и ролеви клас и се опитвам да използвайте релация belongsToMany с методи за прикачване, отделяне и синхронизиране
Потребителски клас
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