【发布时间】:2016-07-06 19:23:14
【问题描述】:
我很难将特定的 MySQL 查询复制到 Knex(我使用 Bookshelf 作为 ORM)。直接在 MySQL 终端查询数据库时,SQL 查询本身返回正确的数据集。
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 .表 'processed_articles_trends' 表示表 'processed_articles' 和 'trends' 表之间的连接表。
我最初尝试使用我的 Bookshelf 模型定义和“withRelated”参数,但 Bookshelf 在幕后执行了一些巫术,这让我很难确定如何从“出版物”中撤回我需要的字段'表。
感谢任何见解 - 非常感谢。
【问题讨论】:
标签: javascript mysql bookshelf.js knex.js