Адонис Многие ко многим, Сортировка по полю 'display_order' в таблице отношений

Из-за многих отношений между categories_1 а также categories_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') кажется, не позволяет мне читать поля в таблице отношений.

Есть ли способ, которым я могу заказать categories_2 используя поле display_order в таблице отношений?

1 ответ

У меня была такая же проблема... В таблице мультимедиа были изображения, которые можно назначить дому, и информация о заказе была внутри таблицы home_media.

Я решил это так:

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

Но я думаю, что важная вещь, которую вы пропустили, это то, что я добавил в свое приложение /Models/Home.js это:

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

Поэтому я верю, что.withPivot - это решение для вас... Просто добавьте withPivot(['display_order']) к вашей модели категорий, где вы определили отношение "многие ко многим".

Более подробная информация здесь: http://adonisjs.com/docs/4.0/relationships

Другие вопросы по тегам