Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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_Html_Symfony_Web_Doctrine Orm - Fatal编程技术网

Php 如何在Symfony中显示一对多关系

Php 如何在Symfony中显示一对多关系,php,html,symfony,web,doctrine-orm,Php,Html,Symfony,Web,Doctrine Orm,嗨,我正在用Symfony编写一个小的Web应用程序 我在两个实体之间有一对多的关系 实体一: /** * @ORM\Entity * @ORM\Table(name="Helfer") */ class Helfer { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id;

嗨,我正在用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 
            ) 
    ) );
}
但是这个代码不起作用

有什么想法吗

工作流程应为:

  • 输入用户信息
  • 从Aufgaben.php中选择一个或多个值
  • 拯救一切

  • 提前感谢

    根据您的具体需要,一个可能的解决方案是使用一个

    这将在HTML中产生一个SELECT标记。

    可能会对您有所帮助


    我解决了这种情况,在我的实体文件中覆盖了
    \uuu toString()
    方法,而不是存储库文件。

    如果你在方法中混合了德语和英语命名,我会选择其中一种并坚持使用,因此你有一个propper编码风格,正如adviceYes我知道这个错误…我想你需要的是为子表单定义你的表单集合类型为
    data\u class
    [它看起来像一个嵌入式表单,所以你也可以研究这个问题[这对我很有用。谢谢;)有可能用复选框呈现它吗?我找到了复选框选项;)
    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
            )
        );
    }