【发布时间】:2019-04-23 08:53:55
【问题描述】:
我希望您能提供帮助,因为我已经搜索了几天。
我有一个名为“属性”的类。其中有一个parentId,它引用了另一个Attributes 条目。
我想用一些额外的字段将实体“属性”扩展为“产品”。除了parentId 关系之外,所有字段都在扩展。
当我使用 getter 和 setter 将父级添加到 Products 时,出现错误:
`"Compile Error: Declaration of Products::setParent(?Attributes $parent): Products must be compatible with Attributes::setParent(?Attributes $parent)
: Attributes"`
我已经尝试了一个独立的实体Products,其中包含所有字段,但与Attributes 的关系会导致数据库关系问题。它是Attributes 的扩展。
尝试了不同类型的 getter 和 setter,并将其从父级扩展。
一直在网上搜索答案,但没有看到具有内部关系的继承。
属性类:
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
*/
class Attributes
{
/**
* @ORM\Id()
* @ORM\Column(type="string", length=255)
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $val;
/**
* @ORM\Column(type="string", length=255)
*/
private $category;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Attributes")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
}
产品类:
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
*/
class Products extends Attributes
{
/**
* @ORM\Column(type="string", length=255)
*/
private $newField1;
/**
* @ORM\Column(type="string", length=255)
*/
private $newField2;
}
我想知道为什么内部关系“Parent”没有被扩展,我很想知道如何在扩展类中获取 parentId。
【问题讨论】:
-
查看下面的链接以获取类似的示例。 Similar Example Here
-
@DavidKariuki 确实很有趣,但我没有使用抽象类来扩展,因为属性也是可以调用的类。