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