Я пытаюсь сделать запрос в dabase с книжной полкой. js.
Вот мои настройки: таблица с именем events
со следующими соответствующими столбцами
id,
owner_id,
targetable_id,
targetable_type,
A таблица с именем tickets
со следующими соответствующими столбцами:
id,
project_id,
owner_id,
assignee_id: is the id of the user assigned for this ticket
Таблица events
и tickets
устанавливает соединение через events.targetable_id
, что tickets.id
И таблица с именем tickets_users_associations
который представляет подписчиков заявки со следующими соответствующими столбцами:
id,
ticket_id,
user_id
Я пытаюсь сделать запрос на книжной полке JS, который возвращает events
, где текущий пользователь либо owner_id, либо assigne_id или является последователем указанного c тикета
Я пробовал что-то подобное, но этот метод возвращает мне все события, и когда пользователь не является ни последователем, ни назначенным, ни владельцем, ни объект tickets
не является пусто
let followersTickets = await UsersTickets().forge().where({user_id: req.user.id}).fetchAll({columns: ['ticket_id']});
// console.log(followersTickets);
let activities = await Events().forge()
.query(function (qb) {
qb.orderBy('created_at', 'DESC');
qb.limit(req.query.limit);
qb.offset(req.query.offset);
})
.fetchAll({
withRelated: [
{
'owner': function (qb) {
qb.select('id', 'first_name', 'last_name');
}
},
'owner.user_profile',
'owner.user_profile.attachments',
{'tickets': function (qb) {
qb.withSchema(req.headers['account-domain']);
qb.where({assignee_id: req.user.id}).orWhere({owner_id: req.user.id});
qb.whereIn('id', followersTickets.pluck('ticket_id'))
qb.select('id', 'title','project_id');
}},
{'tickets.project': function (qb) {
qb.select('id','title', 'slug')
}},
],
debug: true
});
Не могли бы вы, ребята, помочь мне с запросом только о событиях, где пользователь является owner_id и назначен или подписан?