Adonisjs中的.with生成器语句以选择特定列不起作用

时间:2019-10-04 06:10:21

标签: node.js multidimensional-array adonis.js

我想从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 :(得分:0)

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