嗨,我正在用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表中有条目。现在我的用户应该在helper .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
)
) );
}
但是这段代码不起作用。
有什么想法吗?
工作流程应该是:
- 输入用户信息
- 从Aufgaben.php中选择一个或多个值
- 保存所有
Thanks in advance
根据您的具体需要,一个可能的解决方案是使用实体表单类型。
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标签
也许这个和这个可以帮到你。
我解决这种情况覆盖__toString()
方法在我的实体文件,而不是存储库文件。