相关疑难解决方法(0)

是否可以为JoinColumn引用"id"以外的列?

我有一个与Item实体有ManyToOne关系的Category实体.我想让它们加入除Category之外的字段id(在这种情况下,称为字段id2).我的架构如下所示.

class Item {
    /**
     * @ORM\Id
     * @ORM\Column(name = "id", type = "integer")
     * @ORM\GeneratedValue(strategy = "AUTO")
     */
    protected $id;
    /**
     * @ORM\ManyToOne(targetEntity = "Category")
     * @ORM\JoinColumn(name = "category_id", referencedColumnName = "id2")
     */
    protected $category;
}

class Category {
    /**
     * @ORM\Id
     * @ORM\Column(name = "id", type = "integer")
     * @ORM\GeneratedValue(strategy = "AUTO")
     */
    protected $id;
    /**
     * @ORM\Column(name = "id2", type = "string", length = "255", unique = …
Run Code Online (Sandbox Code Playgroud)

php doctrine-orm

18
推荐指数
1
解决办法
6728
查看次数

Doctrine 2映射引用唯一键

基本问题:

是否可以使用Doctrine引用来映射关联,而不是主要但只有唯一键?

扩大的视野:

我有一个实体(Participation),其引用其他实体2(DropoutCauseDischargeType).根据此组合,基于DropoutScenario数据库中的另一个(第4个)表()隐含了一些其他属性.因为两个引用的实体中的任何一个都可以为null,所以我不能将它们声明为主要但只是第4个表中的唯一键.

问题是当我尝试使用Doctrine映射时,我只会收到错误:

Application\Entity\Trainings\DropoutScenario上缺少主键ID的值

我做错了什么,或者说这是不可能的Doctrine?如果没有,有什么更好的解决方案我怎么能这样做?

我一直在寻找相当长的时间并挖掘了Doctrine文档,但我根本找不到任何关于这个...

我的映射的剥离代码示例如下.

参与:

<?php

namespace Application\Entity\Trainings;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\MappedSuperclass
 */
abstract class Participation {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\ManyToOne(targetEntity="Application\Entity\DropoutCause")
     * @ORM\JoinColumn(name="dropout_cause_id", referencedColumnName="id"))
     */
    protected $dropoutCause;

    /**
     * @ORM\ManyToOne(targetEntity="Application\Entity\DischargeType")
     * @ORM\JoinColumn(name="discharge_id", referencedColumnName="id"))
     */
    protected $dischargeType;

    /**
     * @ORM\ManyToOne(targetEntity="DropoutScenario")
     * @ORM\JoinColumns({
     * @ORM\JoinColumn(name="discharge_id", referencedColumnName="discharge_id"),
     * @ORM\JoinColumn(name="dropout_cause_id", referencedColumnName="dropout_cause_id")
     * })
     */
    private $scenario;
Run Code Online (Sandbox Code Playgroud)

DropoutScenario: …

php mysql doctrine-orm

8
推荐指数
1
解决办法
4557
查看次数

标签 统计

doctrine-orm ×2

php ×2

mysql ×1