0
我很難將特定的MySQL查詢複製到Knex中(我正在使用Bookshelf作爲ORM)。當在MySQL終端中直接查詢數據庫時,SQL查詢本身返回正確的數據集。將MySQL查詢轉換爲Knex QueryBuilder語法等效項?
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的QueryBuilder:
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語法不正確,但我不知道在那裏(我懷疑陣列語法第1行的Knex查詢...)&不能爲我的生活弄清楚如何翻譯SQL。表'processed_articles_trends'表示表'processed_articles'和'趨勢'表之間的聯接表。
我最初嘗試使用我的書架模型定義和「withRelated」參數,但書架中,使得它很難引擎蓋下執行一些巫術我確定如何給拉了回來我從'出版物所需的場'表。
感謝任何見解 - 非常感謝。
謝謝Shriram。出於興趣,我的方法的主要缺陷是什麼?什麼是db.raw()方法,以及這些語句的排序如何影響結果?非常感謝! – lensvelt
db.raw()用於通常對使用knex無法構建的查詢進行硬編碼。我不確定排序如何影響結果。 –