2016-01-16 4 views
0

Мне было интересно, возможно ли создать много-много отношений в emberfire. У меня есть следующие модели:От многих до многих отношений в emberfire

//Employee 
name: DS.attr('string'), 
position: DS.attr('string'), 
accessoryPosition: DS.attr('string'), 
education: DS.attr('string'), 
experience: DS.attr('string'), 
imgUrl: DS.attr('string'), 
teachingIn: DS.attr('string'), 
subjects: DS.hasMany('subject', {async: true}) 

//Subject 
name: DS.attr('string'), 
courseDescriptionUrl: DS.attr('string'), 
description: DS.attr('string'), 
examDescriptionUrl: DS.attr('string'), 
imgUrl: DS.attr('string'), 
sportsSubject: DS.attr('boolean'), 
outdoorSubject: DS.attr('boolean'), 
commonSubject: DS.attr('boolean'), 
teachers: DS.hasMany('employee', {async : true}) 

, а затем в моем контроллере сотрудника:

update(subjects) { 
     this.get('model.employee').set('subjects',subjects); 
     this.get('model.employee').save(); 

    } 

Но его добавляет только к моей/сотрудникам конечной точке. В любом случае, чтобы отношения были взаимными, так сказать?

ответ

0

Вы должны вручную добавить занятие к предметам. Способ сделать это было бы что-то вроде:

update(subjects) { 
    this.get('model.employee').set('subjects', subjects); 
    this.get('model.employee').save(); 

    subjects.forEach(subject => { 
    subject.get('teachers').addObject(subject); 
    }); 
    subjects.invoke('save'); 
} 

Array#pushObject добавляет subject, если это уже не в массиве, а Array#invoke вызывает save метод на каждом элементе массива.

Надеюсь, это полезно.

+0

Спасибо, замки, я попробую это, когда у меня появится шанс! – Chris

Смежные вопросы