gpt4 book ai didi

mysql - Doctrine inversedBy 字段包含 PersistentCollection

转载 作者:行者123 更新时间:2023-11-29 13:50:19 26 4
gpt4 key购买 nike

我在两个表到第三个表之间有关系,并带有额外的行,如下所示 question

/** @Entity 
*/
class Illness {


/** @Id @GeneratedValue @Column(type="integer") */
private $illness_id;

/** @Column(type="string") */
private $name;

/** @OneToMany(targetEntity="Illness_Symptom_Association", mappedBy="Illness") */
private $symptAssoc;

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

}

public function setName($val)
{
$this->name = $val;
}

public function getName()
{
return $this->name;
}



public function getSymptAssoc()
{
return $this->symptAssoc;
}

}

使用第三个参数(例如优先级)连接表

/**
* @Entity
*/
class Illness_Symptom_Association {

protected $illness_id;

/**
* @Id()
* @ManyToOne(targetEntity="Illness", inversedBy="symptAssoc")
* @JoinColumn(name="illness_id", referencedColumnName="illness_id", nullable=false)
*/
protected $illness;

/**
* @Id()
* @ManyToOne(targetEntity="Symptom", inversedBy="symptAssoc")
* @JoinColumn(name="symptom_id", referencedColumnName="symptom_id")
* */
protected $symptom;

/** @Column(type="integer") */
protected $s;

public function setIllness(Illness $illness)
{
$this->illness = $illness;
}

/**
*
* @return Illness
*/
public function getIllness()
{
return $this->illness;
}

public function setSymptom(Symptom $sympt)
{
return $this->symptom = $sympt;
}

public function getSymptom()
{
return $this->symptom;
}

public function setS($s)
{
$this->s = $s;
}

public function getS()
{
return $this->s;
}

}

最后出现症状的实体:

/**
* @Entity
*/
class Symptom {

/** @Id @GeneratedValue @Column(type="integer") */
protected $symptom_id;

/** @Column(type="string", unique=true) */
protected $name;

/** @OneToMany(targetEntity="Illness_Symptom_Association", mappedBy="symptom") */
protected $symptAssoc;

public function setName($name)
{
$this->name = $name;
}

public function getName($name)
{
return $this->name;
}

}

但是

 $illness = $em->getRepository('Entity\Illness')->find($id);
$illness->getSymptAssoc();

返回PersistentCollection对象。

如何从连接表中获取带有 s 参数的症状列表?

最佳答案

持久集合是 Collection (在本例中为症状对象)。它已经是一个症状列表。

您可以迭代它(就像数组一样),访问其元素(在本例中是 Symptom 对象),或将其转换为数组:

$illness->getSymptAssoc()->toArray();

关于mysql - Doctrine inversedBy 字段包含 PersistentCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16776678/

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