将 MySQL 查询转换为等效的 Knex QueryBuilder 语法?

Translate a MySQL query into Knex QueryBuilder syntax equivalent?

我很难将特定的 MySQL 查询复制到 Knex 中(我使用 Bookshelf 作为 ORM)。在 MySQL 终端中直接查询数据库时,SQL 查询自身 returns 正确的数据集。

MySQL 查询:

SELECT processed_articles.*, publications.pub_name
FROM processed_articles
INNER JOIN processed_articles_trends ON processed_articles_trends.processed_article_id = processed_articles.id
INNER JOIN publications ON publications.id = processed_articles.pub_id
WHERE (processed_articles_trends.trend_id = 2);

Knex 查询生成器:

knex.select(['publications.pub_name', 'processed_articles.*'])
  .innerJoin('processed_articles_trends', 'processed_articles.id', 'processed_articles_trends.processed_article_id')
  .innerJoin('publications', 'processed_articles.pub_id', 'publications.id')
  .where('processed_articles_trends.trend_id', '=', 2);

我知道 Knex 语法不正确,但我不确定在哪里(我怀疑 Knex 查询第 1 行中的数组语法...)并且我一辈子都想不出如何翻译SQL。 table 'processed_articles_trends' 表示 table 'processed_articles' 之间的连接 table 和“趋势”table。

我最初尝试使用我的 Bookshelf 模型定义和 'withRelated' 参数,但 Bookshelf 在幕后执行了一些巫术,这让我很难确定如何从 ' 出版物' table.

感谢任何见解 - 非常感谢。

knex('processed_articles')
  .innerJoin('processed_articles_trends', 'processed_articles.id', 'processed_articles_trends.processed_article_id')
  .innerJoin('publications', 'processed_articles.pub_id', 'publications.id')
  .where('processed_articles_trends.trend_id', '=', 2)
  .select(db.raw('processed_articles.*'))
  .select('publications.pub_name')