2017-07-09 13 views
0

私はBookshelf.jsクエリから結果を取得し、それらをジョインテーブルの列でソートしようとしています。しかし、 'withRelated'を追加すると、私はターゲットテーブルを取得でき、結合テーブル自体は取得できません。以下は私がこれまで持っていたコードです。Bookshelf.jsクエリの結果を結合テーブルの列に基づいて並べ替えるにはどうすればよいですか?

MyTable.forge().query({where: {id: req.params.id}}) 
    .fetch({ 
    withRelated: [ 
     {'children.children': (qb) => { qb.orderBy('position', 'asc'); }} 
    ] 
    }).then(result => { 
    res.send(JSON.stringify({theResult: result})); 
    }); 

「ORDERBY」が唯一の結合テーブルにある列「位置」で注文することになっています。 'qb'は、結合テーブルではなくターゲットテーブルからの結果のみを返します。私は 'withPivot'を試みましたが、正しい結果を得ていません。

答えて

0

返されたオブジェクトを見て、さらにドキュメントを読んだあと、orderByの属性がBookshelf.jsによって '_pivot_position'に変更されていることがわかりました。 'pivot'が列名に追加され、これを使用します。ただし、これは以下の場合にのみ有効です。

withRelated: [ 
     {'children': (qb) => { qb.orderBy('_pivot_position', 'asc'); }} 
    ] 

上記のように、私は「children.children」を除外し、単に「子供」を使用する必要がありました。 Bookshelf.jsで子要素から複数の 'orderBy'列を指定できるかどうか疑問に思っています。

関連する問題