ChannelEntity - > MatchChannelEntity < - MatchEntity MatchChannelEntityは、他の2つのテーブル間の多対多リレーションシップを保存します。チェックボックスをオンにして、チャンネルに一致するチャンネルが1つある場合は、そのチャンネルのチェックボックスが選択されています。どうすればいいですか?ここSymfony2で多対多フォームを設定する方法
は、フォームタイプコードである:
class MatchhType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('channels', 'entity', array('label' => 'Channels',
'class' => 'Mikay\MikiBundle\Entity\Channel',
'multiple' => true,
'expanded' => true,
'query_builder' => function ($repository)
{
return $repository->createQueryBuilder('c')->orderBy('c.name', 'ASC');
},))
MatchChannelタイプ:
class MatchChannel
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var integer $match_id
* @ORM\ManyToOne(targetEntity="Matchh", inversedBy="channels")
* @ORM\JoinColumn(name="match_id", referencedColumnName="id", nullable="true")
*/
private $match;
/**
* @var integer $channel_id
*
* @ORM\ManyToOne(targetEntity="Channel", inversedBy="mathces")
* @ORM\JoinColumn(name="channel_id", referencedColumnName="id", nullable="true")
*/
private $channel;
私は説明する実施例を使用する、たとえば、私は三つのチャネルを有する:チャンネルA、チャンネルBおよびチャンネルCと1つの一致:一致M、一致Mは1つのチャンネルAを持ち、この関係はmatch_channelテーブルに保存されます。一致フォームがすべてのチャンネルを表示するようにし、チャンネルAが一致M 、その他は未チェックのままです
エンティティフィールドタイプが必要です:http://symfony.com/doc/current/reference/forms/types/entity.html – Nanocom
私はエンティティフィールドタイプを使用していますが、私の状況ははるかに複雑で、私が望むのはチャンネルテーブルのすべてのチャンネルをリストし、match_channelテーブルに保存されているものをチェックしてマッチが所有していることです。 – imikay
フィールドタイプ定義内のチャネルテーブルからチャネルを取得し、自分のリンクを確認することができます。とにかく、詳細な回答が必要な場合は、いくつかのコードを表示し、問題の詳細を説明する必要があります。 – Nanocom