gpt4 book ai didi

symfony - 教义2中的多态关系

转载 作者:行者123 更新时间:2023-12-04 14:45:08 25 4
gpt4 key购买 nike

有没有办法实现 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;
...
}

在数据库上它会是这样的:
Address:
id | type (event or museum) | type_id | street ...

Event:
id | name ...

Museum:
id | name ...

我查看了单表继承,它似乎解决了我的问题,但我不明白如何将事件或博物馆与地址相关联。如果有人可以使用 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;
// ...
}

阅读更多关于 inheritance mapping .

关于symfony - 教义2中的多态关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22488990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com