Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用BookshelfFJS按相关表列对结果排序_Sql_Node.js_Bookshelf.js - Fatal编程技术网

Sql 使用BookshelfFJS按相关表列对结果排序

Sql 使用BookshelfFJS按相关表列对结果排序,sql,node.js,bookshelf.js,Sql,Node.js,Bookshelf.js,我用BookshelfFJS使用“withRelated”查询了两个表。如何按相关表中的列对结果进行排序?例如,我想按rankingLinks.id .fetchAll({withRelated: ['tickerSymbolLinks.tickerSymbol', 'rankingLinks', 'logoLinks.logo']}) 看起来很简单,但在这个问题上我的头撞到了墙上…你实际上可以通过和相关的订购物品,但是,它只会在这个特定属性内订购结果。即: new Participant()

我用BookshelfFJS使用“withRelated”查询了两个表。如何按相关表中的列对结果进行排序?例如,我想按
rankingLinks.id

.fetchAll({withRelated: ['tickerSymbolLinks.tickerSymbol', 'rankingLinks', 'logoLinks.logo']})

看起来很简单,但在这个问题上我的头撞到了墙上…

你实际上可以通过
和相关的
订购物品,但是,它只会在这个特定属性内订购结果。即:

new Participant().query(function(qb) {
    qb.orderBy('participants.id', 'desc'); // You don't have access to any "withRelated" models
}).fetchAll({
    withRelated: [{
        'courses': function(qb) {
            qb.orderBy('courses.id', 'desc');
        }
    }]
}).then(function(result) {
    res.json(result.toJSON());
});
此代码返回所有参与者,按其id排序(降序)。在此结果中,我按courses.id desc订购课程。结果如下:

[
     {
          "id": 3,
          "name": "Susan Doe",
          "created_at": 1429685077496,
          "updated_at": 1429685077496,
          "courses": [
               {
                    "id": 3,
                    "course_name": "Advanced JavaScript",
                    "duration": 80,
                    "_pivot_participant_id": 3,
                    "_pivot_course_id": 3,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               },
               {
                    "id": 1,
                    "course_name": "iOS development",
                    "duration": 120,
                    "_pivot_participant_id": 3,
                    "_pivot_course_id": 1,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               }
          ]
     },
     {
          "id": 2,
          "name": "Richard Doe",
          "created_at": 1429685077496,
          "updated_at": 1429685077496,
          "courses": [
               {
                    "id": 2,
                    "course_name": "Android development",
                    "duration": 60,
                    "_pivot_participant_id": 2,
                    "_pivot_course_id": 2,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               },
               {
                    "id": 1,
                    "course_name": "iOS development",
                    "duration": 120,
                    "_pivot_participant_id": 2,
                    "_pivot_course_id": 1,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               }
          ]
     },
     {
          "id": 1,
          "name": "John Doe",
          "created_at": 1429685077495,
          "updated_at": 1429685077495,
          "courses": [
               {
                    "id": 3,
                    "course_name": "Advanced JavaScript",
                    "duration": 80,
                    "_pivot_participant_id": 1,
                    "_pivot_course_id": 3,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               },
               {
                    "id": 1,
                    "course_name": "iOS development",
                    "duration": 120,
                    "_pivot_participant_id": 1,
                    "_pivot_course_id": 1,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               }
          ]
     }
]
现在,如果我想按课程排序结果,我必须稍微更改查询。即:

new Course().query(function(qb) {
    qb.orderBy('courses.id', 'desc');
}).fetchAll({
    withRelated: ['participants']
}).then(function(result) {
    res.json(result.toJSON());
});
这会产生稍微不同的结果,但具有所需的顺序:

[
     {
          "id": 3,
          "course_name": "Advanced JavaScript",
          "duration": 80,
          "participants": [
               {
                    "id": 1,
                    "name": "John Doe",
                    "created_at": 1429685077495,
                    "updated_at": 1429685077495,
                    "_pivot_course_id": 3,
                    "_pivot_participant_id": 1,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               },
               {
                    "id": 3,
                    "name": "Susan Doe",
                    "created_at": 1429685077496,
                    "updated_at": 1429685077496,
                    "_pivot_course_id": 3,
                    "_pivot_participant_id": 3,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               }
          ]
     },
     {
          "id": 2,
          "course_name": "Android development",
          "duration": 60,
          "participants": [
               {
                    "id": 2,
                    "name": "Richard Doe",
                    "created_at": 1429685077496,
                    "updated_at": 1429685077496,
                    "_pivot_course_id": 2,
                    "_pivot_participant_id": 2,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               }
          ]
     },
     {
          "id": 1,
          "course_name": "iOS development",
          "duration": 120,
          "participants": [
               {
                    "id": 1,
                    "name": "John Doe",
                    "created_at": 1429685077495,
                    "updated_at": 1429685077495,
                    "_pivot_course_id": 1,
                    "_pivot_participant_id": 1,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               },
               {
                    "id": 2,
                    "name": "Richard Doe",
                    "created_at": 1429685077496,
                    "updated_at": 1429685077496,
                    "_pivot_course_id": 1,
                    "_pivot_participant_id": 2,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               },
               {
                    "id": 3,
                    "name": "Susan Doe",
                    "created_at": 1429685077496,
                    "updated_at": 1429685077496,
                    "_pivot_course_id": 1,
                    "_pivot_participant_id": 3,
                    "_pivot_level": null,
                    "_pivot_grade": null,
                    "_pivot_date_of_attendance": null
               }
          ]
     }
]

我希望这有点帮助

实际上,看起来我有一个错误“Company_VIMetrics_Links”表的子句条目中缺少”。我需要看一下相关表格吗?