Note that there are some explanatory texts on larger screens.

plurals
  1. POCreating mappings in Doctrine2 for meta table structrure for use in FormBuilder
    primarykey
    data
    text
    <p>I have two tables:</p> <p>Branches:</p> <pre><code>+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | +-------------+--------------+------+-----+---------+----------------+ </code></pre> <p>BranchMeta:</p> <pre><code>+------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | branch_id | int(11) | YES | MUL | NULL | | | metaname | varchar(255) | NO | | NULL | | | metavalue | varchar(255) | NO | | NULL | | +------------+--------------+------+-----+---------+----------------+ </code></pre> <p>I want to have different meta fields, like "phone", "email", etc. that may be multiple as well.</p> <p>Currently I have this code (setters/getters are omitted):</p> <p>// Entity/Branch.php</p> <pre><code>&lt;?php namespace Acme\Bundle\ConsysBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** * Branch * * @ORM\Entity(repositoryClass="Acme\Bundle\ConsysBundle\Entity\BranchRepository") * @ORM\Table(name="branch") */ class Branch { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="name", type="string", length=255) */ private $name; /** * * @ORM\OneToMany(targetEntity="BranchMeta", mappedBy="branch") */ private $metadata; public function __construct() { $this-&gt;metadata = new ArrayCollection(); } } ?&gt; </code></pre> <p>// Entity/BranchMeta.php</p> <pre><code>&lt;?php namespace Acme\Bundle\ConsysBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * BranchMeta * * @ORM\Entity(repositoryClass="Acme\Bundle\ConsysBundle\Entity\BranchMetaRepository") * @ORM\Table(name="branchmeta") */ class BranchMeta { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\ManyToOne(targetEntity="Branch", inversedBy="metadata") * @ORM\JoinColumn(name="branch_id", referencedColumnName="id") */ private $branch; /** * @var string * * @ORM\Column(name="metaname", type="string", length=255) */ private $name; /** * @var string * * @ORM\Column(name="metavalue", type="string", length=255) */ private $value; ?&gt; </code></pre> <p>And then I need to build a form to add a Branch like this:</p> <pre><code>Branch Name: [_________] Branch Phone: [_________] [-] Branch Phone: [_________] [+] Branch Email: [_________] [-] Branch Email: [_________] [+] [Submit] </code></pre> <p>Where "Branch Phone" fields point to branchmeta table with meta name "phone" and correspondent values, and "Branch Email" fields point to branchmeta table with meta name "email". Both can be dynamically added/deleted.</p> <p>How can I build this using Symfony2's FormBuilder? I created BranchType like this:</p> <pre><code>class BranchType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder-&gt;add('name'); } public function getName() { return 'branch'; } } </code></pre> <p>And BranchMetaType:</p> <pre><code>class BranchMetaType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder-&gt;add('name'); $builder-&gt;add('value'); } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver-&gt;setDefaults(array( 'data_class' =&gt; 'Acme\Bundle\ConsysBundle\Entity\BranchMeta', )); } public function getName() { return 'branch_meta'; } } </code></pre> <p>But then I got stuck... How to properly use BranchMetaType to build the desired form in my case? Maybe I'm missing something in data mapping?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload