【问题标题】:Adonis Many to Many, Order by 'display_order' field in relationship tableAdonis 多对多,按关系表中的“display_order”字段排序
【发布时间】:2018-03-27 07:51:28
【问题描述】:

由于categories_1categories_2 之间的多对多关系,categories_1 中的不同行可能显示categories_2 的不同顺序

例子:

categories_1     categories_2
A                1: a , 2: b , 3: c, 4: d
B                1: c , 2: a

1:, 2: ... 是订单。 因此,我决定不将display_order 作为字段放在categories_2 中,而是将其放在关系表categories_1_categories_2_relations 中,因为categories_2 的顺序取决于categories_1。但是,通过使用.with('categories_2', function(builder) {} 然后.orderBy('display_order','asc') 似乎不允许我读取关系表中的字段。

有没有一种方法可以通过使用关系表中的字段display_order 来订购categories_2

【问题讨论】:

    标签: adonis.js


    【解决方案1】:

    我遇到了同样的问题...媒体表中有可以分配给家庭的图像,并且订单信息在 home_media 表中。

    我是这样解决的:

    await Home.query().with('media', (builder) => {
                builder.orderBy('order', 'asc')
            })
    

    但我认为你错过的重要一点是我在我的 app/Models/Home.js 中添加了这个:

        media() {
        return this.belongsToMany('App/Models/Media')
            .withPivot(['type', 'order'])
    }
    

    所以我相信 .withPivot 是您的解决方案...只需将 withPivot(['display_order']) 添加到您定义多对多关系的类别模型中。

    更多信息在这里:http://adonisjs.com/docs/4.0/relationships#_withpivot

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 2016-04-14
      • 2011-02-02
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多