Bonjour,

Dans le cadre de l'encodage d'une annonce, je passe l'entité "Advert" à une fonction de mon controller. Cette fonction va permettre d'appeler le formulaire permettant d'ajouter des périodes à l'annonce :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
    /**
     *  @Route("/road_trip/{id}/periodsManagement", name="road_trip_periodsManagement")
     */
    public function periodsForm(Advert $advert, Request $request, ObjectManager $manager) {
 
        $numberPeriods = count($advert->getPeriods());
 
        $form = $this->createForm(PeriodsAdvertType::class, $advert);
 
        $form->handleRequest($request);
 
        if ($form->isSubmitted() && $form->isValid()) {
...
            $manager->persist($advert);
            $manager->flush();
...
       }
 
        return $this->render('road_trip/createPeriods.html.twig', ['form' => $form->createView(), 'editMode' => $numberPeriods > 0]);
   }
Ce qui donne ceci :

Nom : Capture.JPG
Affichages : 873
Taille : 19,8 Ko

Si on clique sur le bouton ajouter une prériode, on peut ajouter une (ou plusieurs) périodes de manière dynamique.

Mon souci est que si je désire créer une seule période, pas de souci, celle-ci est bien créée en base de données. Par contre, dès que je désire en enregistrer plusieurs, j'obtiens l'erreur suivante :

Warning: Illegal offset type
Dans mon entité "Period", ma période est liée de cette manière à mon annonce :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Advert", inversedBy="periods")
     * @ORM\JoinColumn(nullable=false)
     */
    private $advert;
Et dans mon annonce, on retrouve les différentes périodes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Period", mappedBy="advert", cascade={"persist"}, orphanRemoval=true)
     */
    private $periods;
Je ne parviens pas à comprendre l'origine du problème. Quelqu'un aurait une idée?

Merci d'avance pour votre aide.