Symfony: объединение юридических лиц - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть сообщение, в котором есть много социальных сетей, и каждая социальная сеть имеет ссылку, когда она была опубликована, поэтому я сделал ManyToOne и OneTOMany, но у меня есть эта ошибка:

Ожидаемое значение типа "Doctrine \"Common \ Collections \ Collection | array "для поля ассоциации" ProcessBundle \ Entity \ Publication # $ Publication_Reseaux_Sociaux ", вместо этого получил" ProcessBundle \ Entity \ Reseaux_Sociaux ".

Публикация Entity:

/**
  *@var ArrayCollection $Publication_Reseaux_Sociaux
  * @ORM\OneToMany(targetEntity="ProcessBundle\Entity\Publication_Reseaux_Sociaux",
 *     mappedBy="publication",cascade={"persist"})
 *
 */
 public $Publication_Reseaux_Sociaux;


Reseaux_Sociaux Entity:

/**
 *@var ArrayCollection $Publication_Reseaux_Sociaux
 * @ORM\OneToMany(targetEntity="ProcessBundle\Entity\Publication_Reseaux_Sociaux",
 *     mappedBy="Reseaux_Sociaux",cascade={"persist"})
 *
 */
private $Publication_Reseaux_Sociaux;
Publication_Reseaux_Sociaux Entity:
/**
 * @ORM\ManyToOne(targetEntity="ProcessBundle\Entity\Publication",
  *     inversedBy="Publication_Reseaux_Sociaux", cascade={"persist"})
 * @ORM\JoinColumn(name="publication_id", referencedColumnName="id")
   */
  protected $publication;
/**
 *  @var ArrayCollection
 * @ORM\ManyToOne(targetEntity="ProcessBundle\Entity\Reseaux_Sociaux",
 *     inversedBy="Publication_Reseaux_Sociaux",cascade={"persist"})
 * @ORM\JoinColumn(name="Reseaux_Sociaux_id", referencedColumnName="id")
 */
protected $Reseaux_Sociaux;
And this is a part of my code my form:
  ->add('Publication_Reseaux_Sociaux',EntityType::class, [
                'class'    =>Reseaux_Sociaux::class,
                'multiple' => true,
                'expanded' => true,
            ])

1 Ответ

0 голосов
/ 20 апреля 2019

первая проблема, которую я вижу с вашим кодом:

вы определяете поле Publication_Resaux_Sociaux с такими аннотациями:

/**
 *@var ArrayCollection $Publication_Reseaux_Sociaux
 * @ORM\OneToMany(targetEntity="ProcessBundle\Entity\Publication_Reseaux_Sociaux",
 *     mappedBy="publication",cascade={"persist"})
 *
 */
 public $Publication_Reseaux_Sociaux;

(я предпочитаю camelCase для имен свойств и CamelCase для имен классов,но я не буду судить ...).Таким образом, класс для поля совпадает с именем свойства.Однако в вашей форме класс для поля не соответствует имени поля (что и должно быть):

  ->add('Publication_Reseaux_Sociaux', EntityType::class, [
            'class'    =>Reseaux_Sociaux::class, 
            'multiple' => true,
            'expanded' => true,
        ])

возможно, это уже решает вашу проблему.

Если этого не произойдет, вам следует дополнительно попробовать следующее: используйте CollectionType с entry_type EntityType.CollectionType всегда будет возвращать / устанавливать коллекцию / массив.

...