Я почти уверен, что это лучше всего решить на стороне PHP, поэтому я уверен, что кто-то другой лучше подойдет для ответа на этот вопрос. Я могу ответить со стороны Ember.
Первое, что я хотел бы сказать, это то, что @handlebars прав в своем комментарии: главное, вам не нужно использовать ember-data для каждого запроса , если вы не хотите ,
Что мы подразумеваем под этим, так это то, что у вас, вероятно, уже есть ситуация, когда вы получаете набор моделей с помощью ember-data такими методами:
this.get('store').findRecord('post', 1);
и вы, вероятно, уже настроили несколько отношений. Если вы хотите удалить связь и ваш внутренний API не способен следовать JSON: API спецификация , тогда вы можете просто создать конкретную конечную точку, которая выполняет эту работу.
Чтобы затем выполнить DELETE
запрос к определенной конечной точке, вы можете использовать следующий код:
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
export default Controller.extend({
ajax: service(),
actions: {
deleteRelationship(id) {
this.get('ajax').request(`/posts/${id}/author`, {
method: 'DELETE',
});
}
}
});
Этот код использует ember-ajax для прямого вызова в сеть.
ПРИМЕЧАНИЕ: Вы должны быть очень осторожны с этим подходом. Это будет означать, что ваш бэкэнд не синхронизируется с данными ember, и вам придется перезагрузить пост-модель во внешнем интерфейсе сразу после выполнения удаления:
store.findRecord('post', 1, { reload: true });
Из-за некоторого странного поведения синхронизации я настоятельно рекомендую обновить свой бэкэнд, чтобы он мог следовать спецификации JSON: API и принимать нули для удаления отношений.
Также, если вы хотите, чтобы мы обсудили ответ на этот вопрос на видео, вы можете посмотреть его здесь https://youtu.be/WKfq3dS73xg и здесь https://youtu.be/ExUtgatzZeI?t=25m54s