Die*_*tro 6 symfony doctrine-orm
有没有办法实现Laravel对学说的多态关系?
这是一个例子:
class Address
{
protected $street;
...
public function setStreet()
{
}
public function getStreet()
{
}
}
class Event
{
/*one to many*/
protected $addresses;
...
}
class Museum
{
/*one to many*/
protected $addresses;
...
}
Run Code Online (Sandbox Code Playgroud)
在数据库上它将是这样的:
Address:
id | type (event or museum) | type_id | street ...
Event:
id | name ...
Museum:
id | name ...
Run Code Online (Sandbox Code Playgroud)
我看了单表继承,它似乎解决了我的问题,但我不明白如何将事件或博物馆与地址联系起来.如果有人能够ELI5,我将非常感激.
它看起来像继承映射的用例,除非您有大量不同的实体要存储地址.使用Doctrine中的示例,您将为每个地址创建两个类.
<?php
namespace MyProject\Model;
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"event" = "EventAddress", "museum" = "MuseumAddress"})
*/
class Address {
protected $street;
// ...
}
/**
* @Entity
*/
class EventAddress extends Address {
protected $event;
// ...
}
/**
* @Entity
*/
class MuseumAddress extends Address {
protected $museum;
// ...
}
Run Code Online (Sandbox Code Playgroud)
阅读有关继承映射的更多信息.
| 归档时间: |
|
| 查看次数: |
5356 次 |
| 最近记录: |