Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #21
    Futur Membre du Club
    Bonjour Thomas
    j'y vois plus clair l'intérêt le l'hydratation d'objet ! donc si on appelle pas l'objet en cours au moment de la création de formulaire on doit l'hydrater nous même via les get , propriété par propriété! Merci pour les liens!
    j'ai toujours l'erreur de syntaxe ce n'est pas a cause de $qb
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
     
    <?php
     
    namespace App\Repository;
     
    use App\Entity\Car;
    use App\Entity\Booking;
    use Doctrine\ORM\Query;
    use App\Form\CarType;
    use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
    use Doctrine\Persistence\ManagerRegistry;
     
    /**
     * @method Car|null find($id, $lockMode = null, $lockVersion = null)
     * @method Car|null findOneBy(array $criteria, array $orderBy = null)
     * @method Car[]    findAll()
     * @method Car[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
     */
    class CarRepository extends ServiceEntityRepository
    {
        public function __construct(ManagerRegistry $registry)
        {
            parent::__construct($registry, Car::class);
        }
     
        /**
         *  @return Query
         */
     
        public function findFilter(Booking $booking) : Query
        {
     
            $qb = $this->createQueryBuilder('c');
     
     
            if ($booking->getPickDate()) {
                $qb = $qb
                ->andWhere('c.pickDate >= '.date('Y-m-d H:i:s'));
     
                 }
            if ($booking->getReturnDate()) {
                $qb = $qb
                 ->andWhere('c.returnDate <= '.date('Y-m-d H:i:s'));
     
                }
     
     
            return $qb->getQuery();
     
        }
     
        // /**
        //  * @return Car[] Returns an array of Car objects
        //  */
        /*
        public function findByExampleField($value)
        {
            return $this->createQueryBuilder('c')
                ->andWhere('c.exampleField = :val')
                ->setParameter('val', $value)
                ->orderBy('c.id', 'ASC')
                ->setMaxResults(10)
                ->getQuery()
                ->getResult()
            ;
        }
        */
     
        /*
        public function findOneBySomeField($value): ?Car
        {
            return $this->createQueryBuilder('c')
                ->andWhere('c.exampleField = :val')
                ->setParameter('val', $value)
                ->getQuery()
                ->getOneOrNullResult()
            ;
        }
        */
    }

  2. #22
    Membre confirmé
    Tu pourrais partager l'erreur complète stp ?

    Si tu dump la Query avant le return, est-ce qu'elle te semble correcte ? (dd($qb->getQuery());)

  3. #23
    Futur Membre du Club
    Citation Envoyé par _Thomas Voir le message
    Tu pourrais partager l'erreur complète stp ?

    Si tu dump la Query avant le return, est-ce qu'elle te semble correcte ? (dd($qb->getQuery());)
    Bonjour thomas


    voici les modif que j'ai faite sur ma query
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
     
     
    <?php
     
    namespace App\Repository;
     
    use App\Entity\Car;
    use App\Entity\Booking;
    use App\Form\CarType;
    use Doctrine\ORM\Query;
    use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
    use Doctrine\Persistence\ManagerRegistry;
     
    /**
     * @method Car|null find($id, $lockMode = null, $lockVersion = null)
     * @method Car|null findOneBy(array $criteria, array $orderBy = null)
     * @method Car[]    findAll()
     * @method Car[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
     */
    class CarRepository extends ServiceEntityRepository
    {
        public function __construct(ManagerRegistry $registry)
        {
            parent::__construct($registry, Car::class);
        }
     
     
     
     
     
        public function findFilter(Booking $booking)
        {
               $qb = $this->createQueryBuilder('c');
            //    $qb->select('c.id, b.pickDate, b.returnDate, c.brand')
            //     ->join('c.bookings', "b")
            //     ->getQuery()
            //     ->getResult();
            //      return $qb;
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
            $qb = $this->createQueryBuilder('c');
     
     
            if ($booking->getPickDate()) {
                $qb = $qb
                ->select('c.id, b.pick_date, b.return_date, c.brand')
                ->Join('c.booking',"b")
                ->andWhere('b.pickDate >= ' .date("'Y-m-d H:i:s'"));
     
     
                 }
            if ($booking->getReturnDate()) {
                $qb = $qb
                 ->andWhere('b.returnDate <= ' .date("'Y-m-d H:i:s'"));
     
                }
            if ($booking->getCar()) {
                    $qb = $qb
                ->andWhere('b.car = :car');
     
                    }
     
            dd($qb->getQuery());
            return $qb->getQuery();
     
        }
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
        // public function findFilter($form)
        // {
        //     $qb = $this->createQueryBuilder('c');
     
        //     if ($form['brand']) {
        //         $qb->andWhere('c.brand = :brand')
        //             ->setParameter('brand', $form['brand']);
        //     }
     
        //     if ($form['year']) {
        //         $qb->andWhere('c.year = :year')
        //             ->setParameter('year', $form['year']);
        //     }
     
        //     if ($form['price']) {
        //         $qb->andWhere('c.price = :price')
        //             ->setParameter('price', $form['price']);
        //     }
     
        //     if ($form['image']) {
        //         $qb->andWhere('c.image= :image')
        //             ->setParameter('image', $form['image']);
        //     }
     
        //     if ($form['isNew']) {
        //         if ($form['isNew'] === 'yes') {
        //             $qb->andWhere('c.isNew = true');
        //         } else {
        //             $qb->andWhere('c.isNew = false');
        //         }
        //     }
     
        //     return $qb->orderBy('c.id', 'ASC')
        //         ->getQuery()
        //         ->getResult()
        //     ;
        // }
     
     
     
        // /**
        //  * @return Car[] Returns an array of Car objects
        //  */
        /*
        public function findByExampleField($value)
        {
            return $this->createQueryBuilder('c')
                ->andWhere('c.exampleField = :val')
                ->setParameter('val', $value)
                ->orderBy('c.id', 'ASC')
                ->setMaxResults(10)
                ->getQuery()
                ->getResult()
            ;
        }
        */
     
        /*
        public function findOneBySomeField($value): ?Car
        {
            return $this->createQueryBuilder('c')
                ->andWhere('c.exampleField = :val')
                ->setParameter('val', $value)
                ->getQuery()
                ->getOneOrNullResult()
            ;
        }
        */
    }

  4. #24
    Membre du Club
    Citation Envoyé par loubna06 Voir le message
    je te remercie de cette réponse detaillée merou!
    est ce que je peux utiliser les sessions dans la 5eme version de symfony?

    merci encore
    Je t'en prie
    Je n'ai aucun projet sous Symfony 5, je n'ai pas essayé, mais je n'ai vu nul part l'info que les sessions seraient abandonnées.
    Donc, je suppose ça devrait marcher...

  5. #25
    Membre confirmé
    Du coup si ça t'affiche toutes les Car, au moins cohérent avec la Query générée SELECT c FROM App\Entity\Car.

    Reste à déboguer dans ta méthode findFilter : vérifie ce que contient $booking, vérifie ce que te retourne les appels aux getters que tu utilises dans tes if, etc. Si l'objet Booking est vide, regarde là où tu appelles cette fonction (dans ton contrôleur) si tu l'hydrate bien avec les valeurs du formulaire. Bon courage !

  6. #26
    Futur Membre du Club
    Citation Envoyé par merou19 Voir le message
    Je t'en prie
    Je n'ai aucun projet sous Symfony 5, je n'ai pas essayé, mais je n'ai vu nul part l'info que les sessions seraient abandonnées.
    Donc, je suppose ça devrait marcher...
    okey je vais suivre ta méthode! et je vais voir ce que ça donne

  7. #27
    Futur Membre du Club
    Citation Envoyé par _Thomas Voir le message
    Du coup si ça t'affiche toutes les Car, au moins cohérent avec la Query générée SELECT c FROM App\Entity\Car.

    Reste à déboguer dans ta méthode findFilter : vérifie ce que contient $booking, vérifie ce que te retourne les appels aux getters que tu utilises dans tes if, etc. Si l'objet Booking est vide, regarde là où tu appelles cette fonction (dans ton contrôleur) si tu l'hydrate bien avec les valeurs du formulaire. Bon courage !
    Bonsoir thomas
    , j'ai obtenu un array avec toutes les voitures en base, je pense que le filtre fonctionne! que je dois faire aprés le debug pour qu'il fonctionne sur mon formulaire du coup?
    THAHNK YOU

  8. #28
    Membre confirmé
    Citation Envoyé par loubna06 Voir le message
    j'ai obtenu un array avec toutes les voitures en base, je pense que le filtre fonctionne!
    C'était pas déjà le cas au tout début de cette discussion ? (tu ne voulais pas toutes les Cars mais uniquement celles correspondant aux filtres du Booking)

    Citation Envoyé par loubna06 Voir le message
    que je dois faire aprés le debug pour qu'il fonctionne sur mon formulaire du coup?
    Je ne comprends pas bien ta question ?? De quel formulaire parles-tu ?

  9. #29
    Futur Membre du Club
    Bonjour Thomas
    je me perds dans ce projet... ! oui justement je voulais faire un filtre pour réserver la voiture avec les critéres que je choisis dans mon formulaire de réservation( je parlais sur ce formulaire)
    J'ai fait une requete sql hier pour tester , voila jai testé avec le dd() que tu m'a envoyé dans un message précédent! la requete sql m'a affiché toutes les voitures disponibles entre les dates que j'ai choisi! et du coup j'ai converti cette même requete en DQL mais le filtre ne fonctionne toujours pas!
    Voici mon carRepo
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    <?php
     
    namespace App\Repository;
     
    use App\Entity\Car;
    use App\Entity\Booking;
    use App\Form\CarType;
    use Doctrine\ORM\Query;
    use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
    use Doctrine\Persistence\ManagerRegistry;
     
    /**
     * @method Car|null find($id, $lockMode = null, $lockVersion = null)
     * @method Car|null findOneBy(array $criteria, array $orderBy = null)
     * @method Car[]    findAll()
     * @method Car[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
     */
    class CarRepository extends ServiceEntityRepository
    {
        public function __construct(ManagerRegistry $registry)
        {
            parent::__construct($registry, Car::class);
        }
     
     
     
     
     
        public function findFilter(Booking $booking)
        {
               $qb = $this->createQueryBuilder('c');
            //    $qb->select('c.id, b.pickDate, b.returnDate, c.brand')
            //     ->join('c.bookings', "b")
            //     ->getQuery()
            //     ->getResult();
            //      return $qb;
     
            if ($booking->getPickDate()) {
                $qb = $qb
                ->select('c.id, c.image, c.brand, c.year, c.seats, c.transmission, c.price, b.pickDate, b.returnDate')
                ->join('c.bookings',"b")
                ->andWhere('b.pickDate >= :date')
                ->setParameter('date', $booking->getPickDate());            
     
                 }
            if ($booking->getReturnDate()) {
                $qb = $qb
                 ->andWhere('b.returnDate <= :date')
                 ->setParameter('date', $booking->getReturnDate());
     
     
                }
            if ($booking->getCar()) {
                    $qb = $qb
                ->andWhere('b.car = :car')
                ->setParameter('car', $booking->getCar());
     
     
                    }
     
           // dd($qb->getQuery()->getResult());
            return $qb->getQuery();
     
     
        }
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
        // public function findFilter($form)
        // {
        //     $qb = $this->createQueryBuilder('c');
     
        //     if ($form['brand']) {
        //         $qb->andWhere('c.brand = :brand')
        //             ->setParameter('brand', $form['brand']);
        //     }
     
        //     if ($form['year']) {
        //         $qb->andWhere('c.year = :year')
        //             ->setParameter('year', $form['year']);
        //     }
     
        //     if ($form['price']) {
        //         $qb->andWhere('c.price = :price')
        //             ->setParameter('price', $form['price']);
        //     }
     
        //     if ($form['image']) {
        //         $qb->andWhere('c.image= :image')
        //             ->setParameter('image', $form['image']);
        //     }
     
        //     if ($form['isNew']) {
        //         if ($form['isNew'] === 'yes') {
        //             $qb->andWhere('c.isNew = true');
        //         } else {
        //             $qb->andWhere('c.isNew = false');
        //         }
        //     }
     
        //     return $qb->orderBy('c.id', 'ASC')
        //         ->getQuery()
        //         ->getResult()
        //     ;
        // }
     
     
     
        // /**
        //  * @return Car[] Returns an array of Car objects
        //  */
        /*
        public function findByExampleField($value)
        {
            return $this->createQueryBuilder('c')
                ->andWhere('c.exampleField = :val')
                ->setParameter('val', $value)
                ->orderBy('c.id', 'ASC')
                ->setMaxResults(10)
                ->getQuery()
                ->getResult()
            ;
        }
        */
     
        /*
        public function findOneBySomeField($value): ?Car
        {
            return $this->createQueryBuilder('c')
                ->andWhere('c.exampleField = :val')
                ->setParameter('val', $value)
                ->getQuery()
                ->getOneOrNullResult()
            ;
        }
        */
    }

  10. #30
    Membre confirmé
    Citation Envoyé par loubna06 Voir le message
    je me perds dans ce projet... !
    Pas de panique, il faut essayer de progresser petit à petit, en validant chaque portion de code au fur et à mesure.

    Si ça fonctionnait en SQL mais pas en DQL, il faut que tu trouves d'où vient la différence entre les deux, donc soit en dumpant $qb->getQuery() pour voir à quoi ressemble le DQL, soit en utilisant directement la barre de debug de Symfony pour afficher les requêtes effectuées au final par Doctrine.

    Tu pourrais aussi nous partager tes entités Booking et Car stp ?

  11. #31
    Futur Membre du Club
    Merci pour l'encouragement thomas!
    je partage mes entités
    Car
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
     
    <?php
     
    namespace App\Entity;
     
    use App\Repository\CarRepository;
    use Doctrine\Common\Collections\ArrayCollection;
    use Doctrine\Common\Collections\Collection;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\HttpFoundation\File\File;
    use Vich\UploaderBundle\Mapping\Annotation as Vich;
     
    /**
     * @ORM\Entity
     * @Vich\Uploadable
     * @ORM\Entity(repositoryClass=CarRepository::class)
     */
    class Car
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer")
         */
        private $id;
     
        /**
         * @ORM\Column(type="string", length=100)
         */
        private $brand;
     
        /**
         * @ORM\Column(type="integer")
         */
        private $year;
     
        /**
         * @ORM\Column(type="integer")
         */
        private $price;
     
        /**
         * @ORM\Column(type="string", length=100)
         */
        private $image;
        /**
         * @Vich\UploadableField(mapping="car_images", fileNameProperty="image")
         * @var File
         */
        private $imageFile;
     
        /**
         * @ORM\Column(type="boolean")
         */
        private $isNew;
     
        /**
         * @ORM\OneToMany(targetEntity=Booking::class, mappedBy="car",orphanRemoval=true)
         */
        private $bookings;
     
        /**
         * @ORM\ManyToOne(targetEntity=Model::class, inversedBy="cars")
         */
        private $model;
     
        /**
         * @ORM\Column(type="integer")
         */
        private $seats;
     
        /**
         * @ORM\Column(type="string", length=100)
         */
        private $transmission;
     
        public function __construct()
        {
            $this->bookings = new ArrayCollection();
        }
     
        public function getId(): ?int
        {
            return $this->id;
        }
     
        public function getBrand(): ?string
        {
            return $this->brand;
        }
     
        public function setBrand(string $brand): self
        {
            $this->brand = $brand;
     
            return $this;
        }
     
        public function getYear(): ?int
        {
            return $this->year;
        }
     
        public function setYear(int $year): self
        {
            $this->year = $year;
     
            return $this;
        }
     
        public function getPrice(): ?int
        {
            return $this->price;
        }
     
        public function setPrice(int $price): self
        {
            $this->price = $price;
     
            return $this;
        }
     
        public function getImage(): ?string
        {
            return $this->image;
        }
     
        public function setImage(string $image): self
        {
            $this->image = $image;
     
            return $this;
        }
     
        public function setImageFile(File $image = null)
        {
            return $this->imageFile = $image;
        }
     
        public function getImageFile()
        {
            return $this->imageFile;
        }
     
        public function getIsNew(): ?bool
        {
            return $this->isNew;
        }
     
        public function setIsNew(bool $isNew): self
        {
            $this->isNew = $isNew;
     
            return $this;
        }
     
        /**
         * @return Collection|Booking[]
         */
        public function getBookings(): Collection
        {
            return $this->bookings;
        }
     
        public function addBooking(Booking $booking): self
        {
            if (!$this->bookings->contains($booking)) {
                $this->bookings[] = $booking;
                $booking->setCar($this);
            }
     
            return $this;
        }
     
        public function removeBooking(Booking $booking): self
        {
            if ($this->bookings->contains($booking)) {
                $this->bookings->removeElement($booking);
                // set the owning side to null (unless already changed)
                if ($booking->getCar() === $this) {
                    $booking->setCar(null);
                }
            }
     
            return $this;
        }
     
        public function getModel(): ?Model
        {
            return $this->model;
        }
     
        public function setModel(?Model $model): self
        {
            $this->model = $model;
     
            return $this;
        }
        public function __toString(){
            return $this->brand;
        }
     
        public function getSeats(): ?int
        {
            return $this->seats;
        }
     
        public function setSeats(int $seats): self
        {
            $this->seats = $seats;
     
            return $this;
        }
     
        public function getTransmission(): ?string
        {
            return $this->transmission;
        }
     
        public function setTransmission(string $transmission): self
        {
            $this->transmission = $transmission;
     
            return $this;
        }
    }


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    <?php
     
    namespace App\Entity;
    use App\Repository\BookingRepository;
    use Doctrine\ORM\Mapping as ORM;
     
     
    /**
     * @ORM\Entity(repositoryClass=BookingRepository::class)
     */
    class Booking
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer")
         */
        private $id;
     
        /**
         * @ORM\Column(type="string", length=150)
         */
        private $pickLocation;
     
        /**
         * @ORM\Column(type="datetime")
         */
        private $pickDate;
     
        /**
         * @ORM\Column(type="datetime")
       
         */
        private $returnDate;
     
        /**
         * @ORM\ManyToOne(targetEntity=Car::class, inversedBy="bookings")
         * @ORM\JoinColumn(nullable=false)
         */
        private $car;
     
        /**
         * @ORM\ManyToOne(targetEntity=User::class, inversedBy="booking")
         * @ORM\JoinColumn(nullable=false)
         */
        private $user;
     
        public function getId(): ?int
        {
            return $this->id;
        }
     
        public function getPickLocation(): ?string
        {
            return $this->pickLocation;
        }
     
        public function setPickLocation(string $pickLocation): self
        {
            $this->pickLocation = $pickLocation;
     
            return $this;
        }
     
        public function getPickDate(): ?\DateTimeInterface
        {
            return $this->pickDate;
        }
     
        public function setPickDate(\DateTimeInterface $pickDate): self
        {
            $this->pickDate = $pickDate;
     
            return $this;
        }
     
        public function getReturnDate(): ?\DateTimeInterface
        {
            return $this->returnDate;
        }
     
        public function setReturnDate(\DateTimeInterface $returnDate): self
        {
            $this->returnDate = $returnDate;
     
            return $this;
        }
     
        public function getCar(): ?Car
        {
            return $this->car;
        }
     
        public function setCar(?Car $car): self
        {
            $this->car = $car;
     
            return $this;
        }
        public function getUser(): ?User
        {
            return $this->user;
        }
     
        public function setUser(?User $user): self
        {
            $this->user = $user;
     
            return $this;
        }
        public function __toString(): ?string
        {
            return $this->car;
        }
     
    }

    Booking

###raw>template_hook.ano_emploi###