Заявление. Со строителем в Adonisjs для выбора конкретного столбца не работает - PullRequest
0 голосов
/ 04 октября 2019

Я хочу получить данные из табличного отношения в Adonisjs. Я использую функцию .with для получения данных из табличного отношения, но только для некоторого столбца, но он не работает.

Мой код контроллера выглядит так:

const cart = await Shop.query()
            .with('products',(builder)=>{
                builder.select('id','product_name')
            })
            .select('id_shop')
            .fetch()

        return response.json({
            status:true,
            message: false,
            data: cart
        })

Но результаткод выше всего id_shop, например:

[

    {
       'id_shop': '1'
       'products': []
    },
    {
       'id_shop': '2'
       'products': []
    }


]

отредактировано

Я добавил модель моего магазина здесь:

class Shop extends Model {

    static get table()
    {
        return 'shop'
    }

    static get primaryKey()
    {
        return 'id_shop'
    }

    products ()
    {
        return this.hasMany('App/Models/Product','id_shop', 'shop_id')
    }
}

ИМодель моего продукта:

class Product extends Model {

    static get table()
    {
        return 'product'
    }

    static get primaryKey()
    {
        return 'id_product'
    }
}

Что не так с моим кодом?

1 Ответ

0 голосов
/ 07 октября 2019

вы неправильно указали отношение hasMany в модели hasMany, например

 products ()
    {
        return this.hasMany('App/Models/Product','shop_id', 'id_shop')
    }

или измените контроллер, в котором вы используете построитель, измените следующим образом

const cart = await Shop.query()
            .with('products',(builder)=>{
                builder.select('id_product','product_name')
            })
            .select('id_shop')
            .fetch()

измените вас id до id_product Вы можете попробовать это

...