您好我正在使用Symfony编写一个小型Web应用程序。
我在两个实体之间有一对多关系。
实体一:
/**
* @ORM\Entity
* @ORM\Table(name="Helfer")
*/
class Helfer {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
* @Assert\NotBlank()
*/
protected $name;
/**
* @ORM\Column(type="string")
* @Assert\NotBlank()
*/
protected $lastName;
/**
* @ORM\Column(type="string")
*/
protected $tel;
/**
* @ORM\Column(type="string")
* @Assert\NotBlank()
* @Assert\Email()
*/
protected $email;
/**
* @ORM\Column(type="string")
*/
protected $organisation;
/**
* @ORM\Column(type="integer")
* @Assert\NotBlank()
* @Assert\Range(min=6, minMessage="Du musst mindestens 6 Jahre Alt sein um bei uns helfen zu können.")
*/
protected $age;
/**
* @ORM\OneToMany(targetEntity="Aufgaben", mappedBy="helfer", cascade={"persist","remove"})
*/
protected $aufgaben;
/**
* @ORM\OneToMany(targetEntity="Zeiten", mappedBy="helfer", cascade={"persist","remove"})
*/
protected $zeiten;
/**
* Constructor
*/
public function __construct()
{
$this->aufgaben = new \Doctrine\Common\Collections\ArrayCollection();
$this->zeiten = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Helfer
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set lastName
*
* @param string $lastName
* @return Helfer
*/
public function setLastName($lastName)
{
$this->lastName = $lastName;
return $this;
}
/**
* Get lastName
*
* @return string
*/
public function getLastName()
{
return $this->lastName;
}
/**
* Set tel
*
* @param string $tel
* @return Helfer
*/
public function setTel($tel)
{
$this->tel = $tel;
return $this;
}
/**
* Get tel
*
* @return string
*/
public function getTel()
{
return $this->tel;
}
/**
* Set email
*
* @param string $email
* @return Helfer
*/
public function setEmail($email)
{
$this->email = $email;
return $this;
}
/**
* Get email
*
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* Set organisation
*
* @param string $organisation
* @return Helfer
*/
public function setOrganisation($organisation)
{
$this->organisation = $organisation;
return $this;
}
/**
* Get organisation
*
* @return string
*/
public function getOrganisation()
{
return $this->organisation;
}
/**
* Set age
*
* @param integer $age
* @return Helfer
*/
public function setAge($age)
{
$this->age = $age;
return $this;
}
/**
* Get age
*
* @return integer
*/
public function getAge()
{
return $this->age;
}
/**
* Add aufgaben
*
* @param \DLRG\HelferBundle\Entity\Aufgaben $aufgaben
* @return Helfer
*/
public function addAufgaben(\DLRG\HelferBundle\Entity\Aufgaben $aufgaben)
{
$this->aufgaben[] = $aufgaben;
return $this;
}
/**
* Remove aufgaben
*
* @param \DLRG\HelferBundle\Entity\Aufgaben $aufgaben
*/
public function removeAufgaben(\DLRG\HelferBundle\Entity\Aufgaben $aufgaben)
{
$this->aufgaben->removeElement($aufgaben);
}
/**
* Get aufgaben
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getAufgaben()
{
return $this->aufgaben;
}
/**
* Add zeiten
*
* @param \DLRG\HelferBundle\Entity\Zeiten $zeiten
* @return Helfer
*/
public function addZeiten(\DLRG\HelferBundle\Entity\Zeiten $zeiten)
{
$this->zeiten[] = $zeiten;
return $this;
}
/**
* Remove zeiten
*
* @param \DLRG\HelferBundle\Entity\Zeiten $zeiten
*/
public function removeZeiten(\DLRG\HelferBundle\Entity\Zeiten $zeiten)
{
$this->zeiten->removeElement($zeiten);
}
/**
* Get zeiten
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getZeiten()
{
return $this->zeiten;
}
}
实体二:
/**
* @ORM\Entity
* @ORM\Table(name="Aufgaben")
*/
class Aufgaben {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* @ORM\Column(type="string")
*/
protected $beschreibung;
/**
* @ORM\ManyToOne(targetEntity="Helfer", inversedBy="aufgaben")
* @ORM\JoinColumn(name="helfer_aufgaben_id", referencedColumnName="id")
*/
protected $helfer;
/**
* @ORM\OneToMany(targetEntity="Zeiten", mappedBy="aufgaben", cascade={"persist","remove"})
*/
protected $zeiten;
/**
* Constructor
*/
public function __construct()
{
$this->zeiten = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Aufgaben
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set beschreibung
*
* @param string $beschreibung
* @return Aufgaben
*/
public function setBeschreibung($beschreibung)
{
$this->beschreibung = $beschreibung;
return $this;
}
/**
* Get beschreibung
*
* @return string
*/
public function getBeschreibung()
{
return $this->beschreibung;
}
/**
* Set helfer
*
* @param \DLRG\HelferBundle\Entity\Helfer $helfer
* @return Aufgaben
*/
public function setHelfer(\DLRG\HelferBundle\Entity\Helfer $helfer = null)
{
$this->helfer = $helfer;
return $this;
}
/**
* Get helfer
*
* @return \DLRG\HelferBundle\Entity\Helfer
*/
public function getHelfer()
{
return $this->helfer;
}
/**
* Add zeiten
*
* @param \DLRG\HelferBundle\Entity\Zeiten $zeiten
* @return Aufgaben
*/
public function addZeiten(\DLRG\HelferBundle\Entity\Zeiten $zeiten)
{
$this->zeiten[] = $zeiten;
return $this;
}
/**
* Remove zeiten
*
* @param \DLRG\HelferBundle\Entity\Zeiten $zeiten
*/
public function removeZeiten(\DLRG\HelferBundle\Entity\Zeiten $zeiten)
{
$this->zeiten->removeElement($zeiten);
}
/**
* Get zeiten
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getZeiten()
{
return $this->zeiten;
}
}
我的数据库在Aufgaben表中有条目。现在我的用户应该在Helfer.php中输入他们的名字和属性。用户应该从Aufgaben实体中选择一些值。
我尝试将Aufgaben.php中的值添加到集合中。
class HelferType extends AbstractType {
private $aufgaben;
public function __construct($aufgaben) {
$this->aufgaben = $aufgaben;
}
/**
*
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add ( 'name' )->add ( 'lastName' )->add ( 'tel' )->add ( 'email' )->add ( 'organisation' )->add ( 'age' );
$builder->add ( 'aufgaben', 'collection', array (
'type' => 'choice',
'options' => array (
'choices' => $this->aufgaben
)
) );
}
但是这段代码不起作用。
任何想法?
工作流程应该是:
提前致谢
答案 0 :(得分:0)
根据您的具体需求,一种可能的解决方案是使用entity form type。
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add ( 'name' )->add ( 'lastName' )->add ( 'tel' )->add ( 'email' )->add ( 'organisation' )->add ( 'age' );
$builder->add ( 'aufgaben', 'entity', array (
'class' => 'YourBundle:Aufgaben',
'multiple' => true,
'property' => 'name',
'choices' => $this->aufgaben
)
);
}
这将导致HTML中的SELECT标记。
答案 1 :(得分:0)