我目前正在尝试为Shopware 5.4.4创建一个插件。
我的一个模型中的一个字段与商店表s_user
(Shopware\Models\Customer\Customer
)具有单向的ManyToOne关系。简化示例:
use Shopware\Components\Model\ModelEntity;
use Doctrine\ORM\Mapping;
/**
* @Mapping\Entity
* @Mapping\Table(name="_test")
*/
class TestModel extends ModelEntity
{
/**
* @Mapping\Column(name="id", type="integer", nullable=false, options={"unsigned":true})
* @Mapping\Id
* @Mapping\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @Mapping\ManyToOne(targetEntity="Shopware\Models\Customer\Customer")
* @Mapping\JoinColumn(name="customer_id", referencedColumnName="id")
*/
private $customer;
}
根据https://www.doctrine-project.org/projects/doctrine-orm/en/2.5/reference/association-mapping.html#many-to-one-unidirectional,应执行ALTER TABLE _test ADD FOREIGN KEY [...]
并添加约束。但是未创建外键。
如果我要添加标签inversedBy并创建双向manyToOne关系,则会创建外键 。但是,由于明显的原因,我不想操纵Shopware核心表,所以我不能这样做。
如果在创建完该表之后我直接(从我的代码中)运行ALTER TABLE [...]
命令,它也将起作用。
所以我是否缺少某些东西,还是真的需要手动添加此外键约束 ?