【发布时间】:2018-10-28 14:17:07
【问题描述】:
class Order{
/**
* @var integer
*
* @ORM\Column(name="order_id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $orderId;
/**
* @ORM\OneToOne(targetEntity="OrderDiscount")
* @ORM\JoinColumn(name="order_id", referencedColumnName="order_id")
*/
private $discount;
/**
* @ORM\OneToOne(targetEntity="OrderTax")
* @ORM\JoinColumn(name="order_id", referencedColumnName="order_id")
*/
private $tax;
/**
* @ORM\OneToOne(targetEntity="OrderPayments")
* @ORM\JoinColumn(name="order_id", referencedColumnName="order_id")
*/
private $payment;
}
class OrderDiscount{
/**
* @var integer
*
* @ORM\Column(name="order_id", type="bigint")
* @ORM\Id
*/
private $id;
/**
* @var float
*
* @ORM\Column(name="discount", type="float", precision=10, scale=0, nullable=false)
*/
private $discount;
}
class OrderPayments{
/**
* @var integer
*
* @ORM\Column(name="order_id", type="bigint", nullable=false)
* @ORM\Id
*/
private $id;
/**
* @var float
*
* @ORM\Column(name="payment_amount", type="float", precision=10, scale=0, nullable=true)
*/
private $paymentAmount;
}
class OrderTax{
/**
* @var integer
*
* @ORM\Column(name="order_id", type="bigint", nullable=false)
* @ORM\Id
*/
private $id;
/**
* @var float
*
* @ORM\Column(name="tax_amount", type="float", precision=10, scale=0, nullable=false)
*/
private $taxAmount;
}
这是我的代码(这里只显示基本代码)。 当我迁移此架构原则时说索引已经存在,当我签入数据库时该索引不存在。 因为教义使用列名生成索引,因为所有关联都有相同的列,这就是教义说索引已经存在的原因。
还有其他更好的方法吗?
【问题讨论】:
-
我在这里看不到任何索引,除了 id 的隐式索引。你能告诉我们错误吗?
-
这里
JoinColumn和referencedColumn同名order_id。最好把refencedColumnName改成discount_id,tax_id..
标签: symfony indexing doctrine entity-relationship one-to-one