На самом деле мне нужно что-то вроде whereHas()
(как в Laravel) на книжной полке, но в bookshelf
ничего такого нет.Но я разбираюсь с этим через необработанные SQL-запросы, которые выполняются следующим образом и работают отлично, как мне нужно.
User.forge()
.query(function(query){
query.whereExists(function(){
this.select('*').from('genres')
.join('genres_user', function(){
this.on('genres.id', '=', 'genres_user.genres_id');
})
.whereRaw('users.id = genres_user.user_id')
.where('genres_id', req.query.genres);
});
})
.fetchAll({
withRelated : ['profile', 'posts']
})
.then(function (collection) {
if(collection == ''){
res.json({error: true, message:'No user found!', data:{}});
}
res.json({error: false, data: collection.toJson()});
})
.catch(function (err) {
res.status(500).json({error: true, data: {message: err.message}});
});