2

「複数」でコレクションの一部であるフォームの関係 ManyToMany フィールドエンティティに正しく保存する方法はありますか? 私はいたるところを見ましたが、やり方を理解させるための例の断片を見つけることができませんでした!

私はこれに対する解決策を見つけることができません!

class Anagrafica
{
/**
 * @ORM\ManyToMany(targetEntity="SubCategories", inversedBy="anagrafiche", cascade={"persist", "remove"})
 * @ORM\JoinTable(name="AnCat")
 **/
 private $subCategories;

 //..
 public function __construct()
 {
 $this->subCategories = new \Doctrine\Common\Collections\ArrayCollection();
//..
}

/**
 * Add subCategories
 *
 * @param \My\BusinessBundle\Entity\SubCategories $subCategories
 * @return Anagrafica
 */
public function addSubCategory(\My\BusinessBundle\Entity\SubCategories $subCategories)
{
    foreach ($subCategories as $subCategory) {
        $subCategory->addAnagrafiche($this);
    }

    $this->subCategories = $subCategories;
}

*******
class SubCategories
{
/**
 * @ORM\ManyToMany(targetEntity="Anagrafica", mappedBy="subCategories")
 */
private $anagrafiche;

public function __construct()
{
$this->anagrafiche = new \Doctrine\Common\Collections\ArrayCollection();
}

/**
 * Add anagrafiche
 *
 * @param \My\BusinessBundle\Entity\Anagrafica $anagrafiche
 * @return SubCategories
 */
public function addAnagrafiche(\My\BusinessBundle\Entity\Anagrafica $anagrafiche)
{
if (!$this->anagrafiche->contains($anagrafiche)) {
    $this->anagrafiche->add($anagrafiche);
}
}

******

AnagraficaType:

//..
->add('subCategories', 'collection', array('type' => new SubCategoriesType(),
            'allow_add' => true,
            'allow_delete' => true,
            'prototype' => true,
            'prototype_name' => '__categ__',
            'by_reference' => false
        ))

*******
SubCategoriesType:

->add('subCategory', 'entity', array(
        'class' => 'CoffeeBusinessBundle:SubCategories',
        'property' => 'subCategory',
        'label' => 'Sotto Categorie',
        'multiple' => true
    ))
4

1 に答える 1

0

一部解決済み

フィールド コレクションに直接入力してこれらの変更を行うと、次のようになります。

AnagraficaType:
->add('subCategories', 'collection', array(
                'type' => 'entity',
                'allow_add' => true,
                'allow_delete' => true,
                'prototype' => true,
                'prototype_name' => '__categ__',
                'by_reference' => false,
                'options' => array(
                    'label' => 'Sotto Categorie',
                    'multiple' => true,
                    'class' => 'MyBusinessBundle:SubCategories',
                    'property' => 'subCategory'
                    )
            ))

アナグラフィカ エンティティ:

public function addSubCategory(ArrayCollection $subCategories)
{
    foreach ($subCategories as $subCategory) {
        $subCategory->addAnagrafiche($this);
        //var_dump($subCategory);
    }
    $this->subCategories = $subCategories;
}

部分的に目的の結果が得られますが、フォーム サブカテゴリ (コレクションごと) にフィールドを追加すると、最後に入力したフィールドのみが保存されます。受信した var_dump ArrayCollection オブジェクトを実行しましたが、実際には、最後に入力されたフィールドからのデータのみが含まれています。

何か案が?

于 2013-03-01T16:50:26.883 に答える