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
你可以试试这个
我想从 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 你可以试试这个