Доктрина Много-к-одному множественные целевые объекты - PullRequest
0 голосов
/ 08 декабря 2018

Я использую Doctrine ORM для своего проекта, и у меня есть проблема с моими таблицами:

  • устройство (id, имя, ip_address)
  • device_group (id, name)
  • template (id, object_type, object_id)

Таким образом, эти три сущности расширяются из суперкласса для общих полей, таких как ID, отметка времени ...

Если мывзгляните на сущность шаблона, поле object_id ссылается на device.id или device_group.id, в зависимости от значения object_type (строка, которая может быть «device» или «group»).Я хотел бы знать, как создать отношения, которые имеют несколько целей, если это возможно.

Группа устройств:

/**
 * @ORM\Entity(repositoryClass="App\Doctrine\Repositories\DeviceGroup")
 * @ORM\Table(name="device_group")
 */
class DeviceGroup extends BaseModel
{

    /**
     * @ORM\Column(type="string", name="name", length=255)
     */
    protected $name;

}

Устройство

/**
 * @ORM\Entity(repositoryClass="App\Doctrine\Repositories\Device")
 * @ORM\Table(name="device")
 */
class Device extends BaseModel
{

    /**
     * @ORM\Column(type="string", name="name", length=255)
     */
    protected $name;

    /**
     * @ORM\Column(type="string", name="ip_address", length=45)
     */
    protected $ip_address;
}

Шаблон

**
 * @ORM\Entity(repositoryClass="App\Doctrine\Repositories\Template")
 * @ORM\Table(name="template")
 */
class DevicePart extends BaseModel
{
    /**
     * @ORM\Column(type="string", name="object_type", length=6)
     */
    protected $object_type;//can be 'group' or 'device'

    /**
     * Many DevicePart have one Object
     * @ORM\ManyToOne(targetEntity="?????????")
     * @ORM\JoinColumn(name="object_id", referencedColumnName="id")
     */
    protected $objects;

    //target entity can be : App\Doctrine\Entities\Device" or "App\Doctrine\Entities\DeviceGroup

}

Я слышал о отображении наследования и уже реализовал это в своем суперклассе, я посмотрел несколько примеров, но это заставило бы меня создавать новые таблицыдело в том, что я должен сохранить текущую структуру, так как данные используются другими программами (SQL Alchemy со скриптами Python).

У вас есть идеи?

Заранее благодарю,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...