Aus irgendeinem Grund fügt knex in einigen Fällen keine linke Verknüpfung zur Abfrage hinzu. Ich habe versucht, den Fehler mit minimalem Code zu reproduzieren, also habe ich versucht, knex mit in-memory sqlite3 zu verwenden.Fehlender linker Join bei Verwendung von bookshelf/knex
var knex = require('knex')({
client:'sqlite3',
connection: {
filename: ":memory:"
},
debug: true
});
var bookshelf = require('bookshelf')(knex);
var Conversation = bookshelf.Model.extend({
tableName: 'conversations',
});
Conversation
.where(qb => {
qb
.leftJoin('conversations_recipients', function() {
this.on('conversations_recipients.conversationId', 'conversations.id');
});
})
.fetch();
Wenn ich die Debug-Meldungen auf der Konsole zu überprüfen, die ich erhalten:
{ method: 'select',
options: {},
bindings: [ 1 ],
sql: 'select "conversations".* from "conversations" limit ?' }
Und es gibt die linke Verknüpfung fehlt. Jemand weiß, was mit diesem Code nicht stimmt und wie kann ich den gewünschten Join einfügen?
Vielen Dank im Voraus.
Ist diese Syntax korrekt? '.where (qb => {' – clay
Ja, es ist es6 Pfeilfunktion. Es läuft ohne Syntaxfehler in Knoten v6. – someone235
Es ist schwer, von Ihrem minimalen Codebeispiel zu beurteilen, aber würde nicht 'Conversation.fetch ({withRelated: ' Empfänger '}) 'geben Sie das erwartete Ergebnis, vorausgesetzt _Conversation_ hatte eine' hasMany' Zuordnung zu einer neuen Modellklasse _Recipient_? – bgerth