gpt4 book ai didi

mysql - adonisjs 中使用关系返回的数据为 null

转载 作者:行者123 更新时间:2023-11-29 15:36:39 25 4
gpt4 key购买 nike

我想使用 adonisjs 从数据库中具有一对一关系的两个表中获取数据。当我尝试从其中一个表中获取所有数据时,结果为空。

这是我在模型中的关系代码:

class Cart extends Model {

product () {
return this.hasOne('App/Models/Product')
}
static get table()
{
return 'cart'
}

static get primaryKey()
{
return 'id_cart'
}

static get foreignKey()
{
return 'id_product'
}

...

这是我的产品型号:

class Product extends Model {

static get table()
{
return 'product'
}

static get primaryKey()
{
return 'product_id'
}

}
module.exports = Product

那么,这是我的 Controller

async index ({response}) {
const allProduct = await Cart.query().with('product').fetch();
return response.json({
status:true,
data: allProduct
})
}

已编辑

这是我的购物车架构

class CartSchema extends Schema {

async up () {
const exists = await this.hasTable('cart')

if (!exists) {
this.create('cart', (table) => {
table.increments()
table.string('id_product').unsigned().references('product_id').inTable('product')
table.timestamps()
})
}
...

这是我的产品架构:

class ProductSchema extends Schema {
async up () {
const exists = await this.hasTable('product')

if (!exists) {
this.create('product', (table) => {
table.increments()
table.timestamps()
})
}
...

以上数据产品为空。这段代码有什么问题吗?

最佳答案

由于当您在 Cartschema 中放置引用时,此数据类型不是字符串,因此您得到输出 null。将数据类型字符串更改为这样的整数

class CartSchema extends Schema {

async up () {
const exists = await this.hasTable('cart')

if (!exists) {
this.create('cart', (table) => {
table.increments()
table.integer('id_product').unsigned().references('product_id').inTable('product')
table.timestamps()
})
}
...

关于mysql - adonisjs 中使用关系返回的数据为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58180053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com