Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fixtures sur une table avec des INT Symfony 4

    19 octobre 2018 à 15:27:19

    Bonjour,

    J'ai actuellement un problème. Je développe un site avec Symfony 4 et je tente de faire des fixtures (avec des tables relations OneToMany).

    Voici mes tables 

    Restaurant : 

    Zipcode, city et department : 

    mon code : 

    <?php
    
    namespace App\DataFixtures;
    
    use App\Entity\City;
    use App\Entity\Zipcode;
    use App\Entity\Department;
    use App\Entity\Restaurant;
    use Doctrine\Bundle\FixturesBundle\Fixture;
    use Doctrine\Common\Persistence\ObjectManager;
    
    class RestaurantFixtures extends Fixture
    {
        public function load(ObjectManager $manager)
        {
            for($i = 1; $i <= 10; $i++){
                $restaurant = new Restaurant();
                $restaurant->setName("testResto")
                           ->setPhoto("testphoto")
                           ->setStreetname("fefrfnf")
                           ->setText("dfefre")
                           ->setphone("24322523")
                           ->setWebsite("difgergdv");
    
                $city = new City();
                $city->setCityname("charleville");
    
                $zipcode = new Zipcode();
                $zipcode->setZipcodenumber("08000");
    
                $department = new Department();
                $department->setDepartname("ardennes");
    
    
            $manager->persist($restaurant);
            $manager->persist($department);
            $manager->persist($zipcode);
            $manager->persist($city);
            
            }
            $manager->flush();
        }
    }
    

    le code erreur :

    In AbstractMySQLDriver.php line 123:

      An exception occurred while executing 'INSERT INTO restaurant (name, photo, streetname, text, phone, website, department_id, zipcode_id, city_id) VALUES (

      ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["testResto", "testphoto", "fefrfnf", "dfefre", "24322523", "difgergdv", null, null, null]:

      SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'department_id' cannot be null

    In PDOStatement.php line 144:

      SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'department_id' cannot be null

    In PDOStatement.php line 142:

      SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'department_id' cannot be null

    2 jours que je suis là dessus et j'arrive pas à trouver la solution !

    Merci d'avance... 

    -
    Edité par Alexsansdraps 19 octobre 2018 à 15:32:23

    • Partager sur Facebook
    • Partager sur Twitter
      19 octobre 2018 à 16:52:51

      Bonjour,

      Je pense que ton soucis vient du fait que tu n'affectes pas ton département à ton restaurant.

      D'ailleurs si jamais ton restaurant n'a pas forcément de département, il ne faut pas que ton champs departement_id dans ta table restaurant soit en NOT NULL sinon il faudra forcément lui indiquer un valeur.

      Essaye un truc du genre 

      <?php
       
      namespace App\DataFixtures;
       
      use App\Entity\City;
      use App\Entity\Zipcode;
      use App\Entity\Department;
      use App\Entity\Restaurant;
      use Doctrine\Bundle\FixturesBundle\Fixture;
      use Doctrine\Common\Persistence\ObjectManager;
       
      class RestaurantFixtures extends Fixture
      {
          public function load(ObjectManager $manager)
          {
              for($i = 1; $i <= 10; $i++){
                  $city = new City();
                  $city->setCityname("charleville");
       
                  $zipcode = new Zipcode();
                  $zipcode->setZipcodenumber("08000");
       
                  $department = new Department();
                  $department->setDepartname("ardennes");
      
                  $restaurant = new Restaurant();
                  $restaurant->setName("testResto")
                             ->setPhoto("testphoto")
                             ->setStreetname("fefrfnf")
                             ->setText("dfefre")
                             ->setphone("24322523")
                             ->setWebsite("difgergdv")
                             ->setDepartement($departement);
      
       
       
              $manager->persist($restaurant);
              $manager->persist($department);
              $manager->persist($zipcode);
              $manager->persist($city);
               
              }
              $manager->flush();
          }
      }

      Ton cas est dans la documentation juste ici

      -
      Edité par MaximeDétaille 19 octobre 2018 à 16:57:19

      • Partager sur Facebook
      • Partager sur Twitter

      Fixtures sur une table avec des INT Symfony 4

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown