У меня возникла проблема с настройкой таблицы отношений MySQL selected
, как показано ниже.
&
У наших пользователей есть страница профиля, где они могут ответить на 3 вопроса из выпадающего меню с несколькими вариантами.
Мой вопрос заключается в том, как добавить их 3 варианта в мою MySQL таблицу selected
в одном запросе и где я могу обновить их варианты, если это необходимо. Я не могу использовать ON DUPLICATE KEY
, поскольку мой ключ user_id
является только индексом, поскольку каждый пользователь будет отображаться 3 раза в selected
, поскольку на каждого пользователя приходится 3 вопроса.
На их странице профиля, когда наши пользователи нажимают кнопку Submit
. Я бы хотел, чтобы наша таблица selected
вставила и / или обновила choice_id
для этого пользователя.
Я использую возражение JS для настройки своих моделей. Вот мои User
и Selected
модели
МОДЕЛЬ ПОЛЬЗОВАТЕЛЯ
class User extends Model {
static get tableName() {
return 'users';
}
static get relationMappings() {
return {
choice: {
relation: Model.HasManyRelation,
modelClass: Selected,
join: {
from: 'users.id',
to: 'selected.user_id',
},
},
user: {
relation: Model.ManyToManyRelation,
modelClass: Choices,
join: {
from: 'choices.id',
through: {
from: 'selected.user_id',
to: 'selected.choice_id',
},
to: 'users.id',
},
},
};
}
ИЗБРАННАЯ МОДЕЛЬ
class Selected extends Model {
static get tableName() {
return 'selected';
}
static get jsonSchema() {
return {
type: 'object',
properties: {
id: {
type: 'integer',
},
choice_id: {
type: 'integer',
},
user_id: {
type: 'integer',
},
},
};
}
}
Любая помощь, чтобы проверить, правильно ли настроена таблица отношений или помощь с запросом MySQL, будет высоко ценится. Спасибо!
РЕДАКТИРОВАТЬ Вот где я. Отсутствует функция обновления существующих ответов.
insert into selected(choice_id, user_id)
select choices.Id, users.Id from choices join users
on choices.Id in (1, 6, 10) and users.Id = 91
WHERE NOT EXISTS (
SELECT user_id FROM selected WHERE user_id = 91
) LIMIT 3;