Присоединяйтесь в продолжении - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть следующие таблицы базы данных: Событие, Пользователь и Избранное.

Многие пользователи могут добавить в избранное событие, а пользователь может добавить в избранное много событий.

Схема таблицы избранного:

CREATE TABLE favorites
(
    user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
    event_id INTEGER REFERENCES events(id) ON DELETE CASCADE,

    PRIMARY KEY (user_id, event_id)
);

Мне нужен запрос, который возвращает все события и информацию (предпочтительно логическую) относительно того, является ли каждое событие предпочтительным для пользователя (его идентификатор доступен, и вы можете назвать его user_id).

До сих пор я пробовал:

Event.findAll({
    include: { 
        model: sequelize.models.favorites,
        required: false,
        where: {
            user_id: user_id
        }
    }
});

В модели событий у меня есть связь

models.events.belongsToMany(models.users, { through: 'favorites'});

А в модели пользователя у меня есть связь

models.users.belongsToMany(models.events, { through: 'favorites'});

1 Ответ

0 голосов
/ 13 ноября 2018

удалось найти решение:

Event.findAll({
    include: { 
        model: sequelize.models.users,
        as: 'favorite',
        where: {
            id: user_id
        },
        required: false
    }
});

со следующими ассоциациями:

models.users.belongsToMany(models.events, { through: 'favorites', as: 'favorite'});

models.events.belongsToMany(models.users, { through: 'favorites', as: 'favorite'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...