Adonisjs 中对 select 特定列的声明 .with builder 不起作用

Statement .with builder in Adonisjs to select specifict column doesn't work

我想从 Adonisjs 中的 table 关系中获取数据。我使用 .with 函数从 table 关系中获取数据,但只是针对某些列,但它不起作用。

我的控制器代码是这样的:

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'
    }
}

我的代码有什么问题?

你在模型中输入了错误的 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 你可以试试这个