gpt4 book ai didi

php - 类 Doctrine\Common\Collections\ArrayCollection 不是有效的实体或映射的父类(super class)

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

我有三个实体:

特征值.php

<?php

namespace Webmuch\ProductBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
*/
class FeatureValue
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

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

/**
* @ORM\OneToMany(targetEntity="FeatureType", mappedBy="name")
*/
private $featuretype;



public function __construct()
{
$this->featuretype = new \Doctrine\Common\Collections\ArrayCollection();
}

特征类型.php
<?php

namespace Webmuch\ProductBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Webmuch\ProductBundle\Entity\FeatureValue;

/**
* @ORM\Entity
*/
class FeatureType
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

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

/**
* @ORM\ManyToOne(targetEntity="FeatureValue", inversedBy="featuretype",cascade={"persist"})
* @ORM\JoinColumn(name="feature_value_id", referencedColumnName="id")
*/
protected $name;

public function __construct()
{
$this->name = new \Doctrine\Common\Collections\ArrayCollection();
}

产品.php
<?php
namespace Webmuch\ProductBundle\Entity;

use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection as ArrayCollection;

/**
* @ORM\Entity
* @ORM\Table()
* @ORM\HasLifecycleCallbacks
*/
class Product
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @ORM\ManyToMany(targetEntity="Store")
*/
protected $store;

/**
* @ORM\ManyToMany(targetEntity="Webmuch\CategoryBundle\Entity\Category")
*/
protected $category;

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

/**
* @Gedmo\Slug(updatable=false, unique=true)
* @ORM\Column(type="string", length=255)
*/
protected $slug;

/**
* @ORM\Column(type="integer")
*/
protected $quantity;

/**
* @ORM\Column(type="boolean")
*/
protected $active;

/**
* @ORM\Column(type="text", length="4000", nullable="true")
*/
protected $preview;

/**
* @ORM\ManyToMany(targetEntity="FeatureType")
* @ORM\JoinColumn(name="feature_type_id", referencedColumnName="id")
*/
protected $features;

public function __toString()
{
return $this->getTitle();
}

}

我的问题是,当我在 FeatureType 中添加 FeatureValue 时,会显示错误类“Doctrine\Common\Collections\ArrayCollection 不是有效实体或映射的父类(super class)”。

在我的项目中,我想要 FeatureType 以及我的 Product 实体中的 FeatureValue。

假设在 FeatureType 中有两个属性 Size 和 Colour。现在在 FeatureType Size 中给出了三个 FeatueValue Small、Medium、Large,还假设在 FeatureType Colour 中给出了三个 FeatureValue Red、Green、Yello。
现在我想在我的产品实体中同时显示 FeatureType 及其 FeatureValue。

所以任何人都告诉我如何做到这一点。我尝试了很多但没有成功。

最佳答案

Webmuch\ProductBundle\Entity\FeatureType::__construct你分配一个 ArrayCollection$this->name ,这是错误的,因为这是 ToOne 而不是 ToMany。

只需删除此行。

关于php - 类 Doctrine\Common\Collections\ArrayCollection 不是有效的实体或映射的父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12330406/

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