【问题标题】:Integrity constraint violation: 1048 DOCTRINE违反完整性约束:1048 DOCTRINE
【发布时间】:2021-07-15 19:46:49
【问题描述】:

我正在做一个从订单到产品的多对多单向关系,一个订单可以有很多产品,一个产品可以有很多订单。

查看我的代码:

/**
 * @ManyToMany(targetEntity="Product")
 * @JoinTable(name="dc_order_products",
 *      joinColumns={@JoinColumn(name="order_id", referencedColumnName="id")},
 *      inverseJoinColumns={
 *          @JoinColumn(name="product_id", referencedColumnName="id"),
 *          @JoinColumn(name="product_price", referencedColumnName="product_price")     
 *      })
 **/
protected $order_products;

我在所有谷歌中都没有找到如何在 inverseJoinColumns 中使用多个 @JoinColumns,所以我只是复制了第一个并用逗号分隔。

问题是,当我使用以下代码运行项目时:

$p = new \Entities\Product(get_date(), 'Product Name', 'Description', 39, 85, 0, 0, 1);
$em->persist($p);
$em->flush();

$o = new \Entities\Order($u->getUserId(), get_date(), 1, 150);

$o->addOrderProduct($p);

$em->persist($o);
$em->flush();

它给了我:

违反完整性约束:1048 列 'product_price' 不能为空

但是价格是确定的,我在产品对象中做了一个 print_r,它就在那里。

我错过了什么?

【问题讨论】:

  • 你能告诉我们价格注释和定价的方法吗?
  • Id 产品类 /** @Column(type="decimal", nullable=true) */ protected $product_price;
  • 当我在 $p 变量中设置一个新实例时,价格是在 Product 类的构造函数中设置的。

标签: php mysql doctrine-orm doctrine mysql-error-1048


【解决方案1】:

我已经找到了解决方案,刚刚打开 Doctrine FAQ 就可以了:)

看: http://docs.doctrine-project.org/en/latest/tutorials/composite-primary-keys.html

我需要创建另一个名为 OrderProducts 的实体,其中包含我所有的具有复合主键关系的订单产品。

知道了!谢谢。

【讨论】:

    猜你喜欢
    • 2019-10-20
    • 1970-01-01
    • 2020-03-29
    • 2018-03-04
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    相关资源
    最近更新 更多