Partage
  • Partager sur Facebook
  • Partager sur Twitter

Doctrine configuration de pilôte de métadonnée

Probleme avec le pilôte de métadonnée annotations de doctrine

Sujet résolu
    4 janvier 2022 à 17:39:44

    Bonjour puis-je avoir un petit coup de pousse ? J'utilise doctrine 2.10.4 pour un petit projet là et je lance la commande de créations de table j'obtiens une erreur du type:
     No Metadata Classes to process.

    J'ai beau chercher je n'arrive pas à résoudre le problème.

    Voici la configuration et ma class

    <?php 
    require implode(DIRECTORY_SEPARATOR,[dirname(__DIR__),"vendor","autoload.php"]);
    use Doctrine\ORM\Configuration;
    use Doctrine\ORM\EntityManager;
    use Symfony\Component\Cache\Adapter\ArrayAdapter;
    use Symfony\Component\Cache\Adapter\PhpFilesAdapter;
    
    // ...
    $applicationMode="development";
    if ($applicationMode == "development") {
        $queryCache = new ArrayAdapter();
        $metadataCache = new ArrayAdapter();
    } else {
        $queryCache = new PhpFilesAdapter('doctrine_queries');
        $metadataCache = new PhpFilesAdapter('doctrine_metadata');
    }
    
    $config = new Configuration;
    
    $config->setMetadataCache($metadataCache);
    $driverImpl = $config->newDefaultAnnotationDriver(implode(DIRECTORY_SEPARATOR,[dirname(__DIR__),"src","Models"]));
    
    $config->setMetadataDriverImpl($driverImpl);
    $config->setQueryCache($queryCache);
    $config->setProxyDir(implode(DIRECTORY_SEPARATOR,[dirname(__DIR__),"src","Proxies"]));
    $config->setProxyNamespace('Graph\Proxies');
    
    if ($applicationMode == "development") {
        $config->setAutoGenerateProxyClasses(true);
    } else {
        $config->setAutoGenerateProxyClasses(false);
    }
    
    // database configuration parameters
    $conn = array(
        'driver' => 'pdo_sqlite',
        'path' => dirname(__DIR__).'/db.sqlite',
    );
    
    // obtaining the entity manager
    $entityManager = EntityManager::create($conn, $config);
    return $entityManager;
    <?php 
    namespace Graph\Models;
    use Doctrine\ORM\Mapping as ORM;
     /**
      *@ORM\Entity
      *@ORM\Table(name="users")
      */
    class User extends Model{
    /**
     * @ORM\id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;
    /**
     * @ORM\Column(type="string")
     */
    private $firstname;
    /**
     * @ORM\Column(type="string")
     */
    private $lastname;
    /**
     * @ORM\Column(type="string")
     */
    private $username;
    /**
     * @ORM\Column(type="string")
     */
    private $email;
    /**
     * @ORM\Column(type="string")
     */
    private $password;
    /**
    * @ORM\Column(type="string")
    */
    private $image;
    
    }
    




    -
    Edité par foussedev 4 janvier 2022 à 20:42:56

    • Partager sur Facebook
    • Partager sur Twitter
      5 janvier 2022 à 18:05:18

      Ton entité Model est une MappedSuperClass ?
      • Partager sur Facebook
      • Partager sur Twitter
      $2b||!$2b
        5 janvier 2022 à 21:25:46

        skuti a écrit:

        Ton entité Model est une MappedSuperClass ?



        Je ne comprends pas trop ce que tu veux dire mais j'ai trouvé la solution. Il fallait mettre le deuxième paramètre de cette methode newDefaultAnnotationDrivera false vue par defaut il est a true. Par contre je sais pas pourquoi ?
        $driverImpl = $config->newDefaultAnnotationDriver(implode(DIRECTORY_SEPARATOR,[dirname(__DIR__),"src","Models"]),false);
         




        -
        Edité par foussedev 5 janvier 2022 à 21:33:24

        • Partager sur Facebook
        • Partager sur Twitter
          5 janvier 2022 à 22:57:39

          Salut

          Si jamais, avec les versions récentes de PHP (je ne saurais dire avec certitude depuis laquelle, mais à mon avis PHP 7.0), les chemins peuvent utiliser la syntaxe UNIX même sur Windows, c'est supporté, portable, probablement un peu plus performant et un peu plus lisible aussi  ;)

          • Partager sur Facebook
          • Partager sur Twitter
            7 janvier 2022 à 1:18:07

            Ymox a écrit:

            Salut

            Si jamais, avec les versions récentes de PHP (je ne saurais dire avec certitude depuis laquelle, mais à mon avis PHP 7.0), les chemins peuvent utiliser la syntaxe UNIX même sur Windows, c'est supporté, portable, probablement un peu plus performant et un peu plus lisible aussi  ;)


            Je comprend mais je me sens un peu plus à l'aise avec la fonction implode.

            -
            Edité par foussedev 7 janvier 2022 à 1:19:51

            • Partager sur Facebook
            • Partager sur Twitter

            Doctrine configuration de pilôte de métadonnée

            × 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