我正在尝试子类一个Doctrine 2实体,以添加一组我想使用的“助手”函数。
例如,这是我的实体:
namespace Project\Entity;
class Product
{
private $name;
private $idProductCategory;
}映射是通过XML文件完成的。
然后,我试着扩展它:
namespace Project\Entity;
class ProductJSON extends Product {
public function toJSON() {
/* ... */
}
}当我试图在Doctrine中使用这个对象时:
$a = $entityManager->getRepository('\Project\Entity\ProductJSON');我得到了“没有找到名为Project.Entity.ProductJSON.dcm.xml的映射文件”错误。这是完全正确的,因为我不想要任何额外的映射。
我曾广泛阅读过Doctrine和有关映射超类(Doctrine: extending entity class)的内容,但据我所知,这是为了在DB意义上扩展实体。
我不关心数据库/映射,我只想扩展实体PHP,以便在我的应用程序中无缝地使用对象。
如何实现这一目标?
发布于 2016-06-16 14:14:28
添加其他方法不需要子类。只要将这些方法添加到实体类中,Doctrine就会忽略它们,因为它们没有附加任何映射信息。
例如。
class Product
{
private $name;
private $idProductCategory;
/* ... */
public function toJSON() {
/* ... */
}
}https://stackoverflow.com/questions/37861508
复制相似问题