Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony数组集合作为实体属性_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony数组集合作为实体属性

Php Symfony数组集合作为实体属性,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,有没有办法将ArrayCollection与实体创建的数据库列相关联 例如,我有两个实体:家庭和宠物类型 Househous current具有“宠物类型”属性,但它需要宠物类型对象,因此目前只能选择一个 我希望家庭能够有多种宠物类型。因此,他们可以选择狗和猫,而不必在狗和猫之间做出选择 我尝试过这样做,但出现以下错误: 可捕获致命错误:参数1传递给 Acme\CoreBundle\Entity\House::setPetType()必须是的实例 Acme\CoreBundle\Entity\P

有没有办法将ArrayCollection与实体创建的数据库列相关联

例如,我有两个实体:家庭和宠物类型

Househous current具有“宠物类型”属性,但它需要宠物类型对象,因此目前只能选择一个

我希望家庭能够有多种宠物类型。因此,他们可以选择狗和猫,而不必在狗和猫之间做出选择

我尝试过这样做,但出现以下错误:

可捕获致命错误:参数1传递给 Acme\CoreBundle\Entity\House::setPetType()必须是的实例 Acme\CoreBundle\Entity\PetType,的实例 条令\Common\Collections\ArrayCollection给定


我假设我需要更改家庭实体中petType的属性,以便关联到多个宠物类型?

从您的描述来看,
家庭
宠物类型
的基数为m-to-one;这意味着一个家庭记录只能有一个
PetType
,而
PetType
可以与多个
家庭记录关联

从数据库的角度来看,这意味着外键进入
家庭
表。如果您想在
家庭
宠物类型
之间建立“多重”连接,您必须修改实体之间的关系

只是一个示例(免责声明:您的实体可能会被命名为不同的名称,我没有测试此代码。我在这里解释一个概念,不处理可运行代码,因为您的示例没有附带代码片段示例)


之后,你需要再次跑步

php应用程序/控制台原则:模式:更新--force

这将更新您的DB模式,因为新的基数是m-to-n,所以将创建一个名为
househouse\u pettype
的关系表(该表将只包含来自其他两个表的外键)

之后,您可以选择使用两种方法(从家庭角度)

  • ->addPetType($petType)
    PetType
    对象附加到
    家庭
    收藏
  • ->setPetTypes($petTypeArrayCollection)将在快照中设置所有
    
    PetTypes

从你的描述来看,
家庭
宠物类型
的基数是m对1;这意味着一个家庭记录只能有一个
PetType
,而
PetType
可以与多个
家庭记录关联

从数据库的角度来看,这意味着外键进入
家庭
表。如果您想在
家庭
宠物类型
之间建立“多重”连接,您必须修改实体之间的关系

只是一个示例(免责声明:您的实体可能会被命名为不同的名称,我没有测试此代码。我在这里解释一个概念,不处理可运行代码,因为您的示例没有附带代码片段示例)


之后,你需要再次跑步

php应用程序/控制台原则:模式:更新--force

这将更新您的DB模式,因为新的基数是m-to-n,所以将创建一个名为
househouse\u pettype
的关系表(该表将只包含来自其他两个表的外键)

之后,您可以选择使用两种方法(从家庭角度)

  • ->addPetType($petType)
    PetType
    对象附加到
    家庭
    收藏
  • ->setPetTypes($petTypeArrayCollection)将在快照中设置所有
    
    PetTypes

从你的描述来看,
家庭
宠物类型
的基数是m对1;这意味着一个家庭记录只能有一个
PetType
,而
PetType
可以与多个
家庭记录关联

从数据库的角度来看,这意味着外键进入
家庭
表。如果您想在
家庭
宠物类型
之间建立“多重”连接,您必须修改实体之间的关系

只是一个示例(免责声明:您的实体可能会被命名为不同的名称,我没有测试此代码。我在这里解释一个概念,不处理可运行代码,因为您的示例没有附带代码片段示例)


之后,你需要再次跑步

php应用程序/控制台原则:模式:更新--force

这将更新您的DB模式,因为新的基数是m-to-n,所以将创建一个名为
househouse\u pettype
的关系表(该表将只包含来自其他两个表的外键)

之后,您可以选择使用两种方法(从家庭角度)

  • ->addPetType($petType)
    PetType
    对象附加到
    家庭
    收藏
  • ->setPetTypes($petTypeArrayCollection)将在快照中设置所有
    
    PetTypes

从你的描述来看,
家庭
宠物类型
的基数是m对1;这意味着一个家庭记录只能有一个
PetType
,而
PetType
可以与多个
家庭记录关联

从数据库的角度来看,这意味着外键进入
家庭
表。如果您想在
家庭
宠物类型
之间建立“多重”连接,您必须修改实体之间的关系

只是一个示例(免责声明:您的实体可能会被命名为不同的名称,我没有测试此代码。我在这里解释一个概念,不处理可运行代码,因为您的示例没有附带代码片段示例)


之后,你需要再次跑步

class Household { //some properties /** * @ORM\ManyToMany(targetEntity="PetType", inversedBy="households") * @ORM\JoinTable(name="household_pettype") */ $pet_types; //some methods public function addPetType(PetType $petType) { $this->pet_types[] = $petType; return $this; } public function setPetTypes(ArrayCollection $petTypes) { $this->pet_types = $petTypes; return $this; } public function removePetType(PetType $petType) { $this->pet_types->removeElement($petType); } public function getPetTypes() { return $this->pet_types; } }
class PetType
{
  //some properties

  /**
   * @ORM\ManyToMany(targetEntity="Household", mappedBy="pet_types")
   */
   $households;

  //some methods

  public function addHousehold(Household $household)
  {
    $this->households[] = $household;

    return $this;
  }

  public function setHouseholds(ArrayCollection $households)
  {
    $this->households = $households;

    return $this;
  }

  public function removeHousehold(Household $household)
  {
    $this->households->removeElement($household);
  }

  public function getHousehold()
  {
    return $this->households;
  }
}