Tengo la siguiente consulta SQL:
select p.id, p.slug, p.post_author, b.id, b.is_deleted from posts p left join blocks b on ((b.blocked_id = p.post_author and blocker_id = <user id>) or (b.blocked_id = <user_id> and b.blocker_id = p.post_author)) and b.is_deleted = false where b.id is null order by posted_at desc limit 20y necesito una declaración de orm de objeción correspondiente, y no estoy seguro de cómo dar prioridad a esos corchetes. A continuación se muestra lo que tengo como modificador hasta ahora:
getUnblockedUsersPosts: (builder) => { builder.leftJoin('blocks as b', function(){ this.on('b.blocked_id', '=', 'posts.post_author') .andOn('b.blocker_id', '=', parseInt(user.id)) .orOn('b.blocked_id', '=', parseInt(user.id)) .andOn('b.blocker_id', '=', 'posts.post_author') .andOn('b.is_deleted', knex.raw('false')) }).where('b.id', 'is', null) },Entonces, la consulta anterior se resolvió con el siguiente código, referencia: https://knexjs.org/#Builder-join
getUnblockedUsersPosts: (builder) => { builder.leftJoin('blocks as b', function(){ this.on(function(){ this.on(function(){ this.on('b.blocked_id', '=', 'posts.post_author') .andOn('b.blocker_id', '=', parseInt(user.id)) }) this.orOn(function(){ this.on('b.blocker_id', '=', 'posts.post_author') .andOn('b.blocked_id', '=', parseInt(user.id)) }) }) this.andOn('b.is_deleted', knex.raw('false')) }).where('b.id', 'is', null) }