4
votes

I have installed symfony 3.4 and doctrine packages

"php": ">=5.5.9",
        "doctrine/doctrine-bundle": "^1.8",
        "doctrine/doctrine-migrations-bundle": "^1.3",
        "doctrine/orm": "^2.5",
        "incenteev/composer-parameter-handler": "^2.0",
        "sensio/distribution-bundle": "^5.0.19",
        "sensio/framework-extra-bundle": "^5.0.0",
        "symfony/monolog-bundle": "^3.1.0",
        "symfony/polyfill-apcu": "^1.0",
        "symfony/swiftmailer-bundle": "^2.6.4",
        "symfony/symfony": "3.4.*",
        "twig/twig": "^1.0||^2.0"

Created database using following command

php bin/console doctrine:database:create

G:\XAMPP\htdocs\project>php bin/console doctrine:schema:validate
[Mapping]  OK - The mapping files are correct.
[Database] OK - The database schema is in sync with the mapping files.

G:\XAMPP\htdocs\project>php bin/console doctrine:schema:validate
[Mapping]  OK - The mapping files are correct.
[Database] OK - The database schema is in sync with the mapping files.

G:\XAMPP\htdocs\project>php bin/console doctrine:schema:update --force
No Metadata Classes to process.

G:\XAMPP\htdocs\project>

Whenever i ran php bin/console doctrine:schema:update --force command it will throw an error like

No Metadata Classes to process.

I created entity class as in the documentation http://symfony.com/doc/3.4/doctrine.html

Product Entity class

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="product")
 */
class Product
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=100)
     */
    private $name;

    /**
     * @ORM\Column(type="decimal", scale=2)
     */
    private $price;


    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name
     *
     * @param string $name
     *
     * @return Product
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set price
     *
     * @param integer $price
     *
     * @return Product
     */
    public function setPrice($price)
    {
        $this->price = $price;

        return $this;
    }

    /**
     * Get price
     *
     * @return int
     */
    public function getPrice()
    {
        return $this->price;
    }
}
2
Did you try clear cache? - Imanali Mamadiev
@ImanaliMamadiev.ya i have cleared cache even i deleted cache folders from var\cache - scott

2 Answers

3
votes

Yes finally i found the issue is with John.orm.php file which will generated when i ran php bin/console doctrine:generate:entity

I have created Entity class using following command

php bin/console doctrine:generate:entity

Then it will prompt to

Welcome to the Doctrine2 entity generator

This command helps you generate Doctrine2 entities.

First, you need to give the entity name you want to generate.
You must use the shortcut notation like AcmeBlogBundle:Post.

The Entity shortcut name: AppBundle:John

Determine the format to use for the mapping information.

Configuration format (yml, xml, php, or annotation) [annotation]: php

Instead of starting with a blank entity, you can add some fields now.
Note that the primary key will be added automatically (named id).

Available types: array, simple_array, json_array, object,
boolean, integer, smallint, bigint, string, text, datetime, datetimetz,
date, time, decimal, float, binary, blob, guid.

New field name (press <return> to stop adding fields): id
 Field "id" is already defined.
New field name (press <return> to stop adding fields): username
Field type [string]: string
Field length [255]:
Is nullable [false]: true
Unique [false]: false

New field name (press <return> to stop adding fields): password
Field type [string]:
Field length [255]:
Is nullable [false]: true
Unique [false]:

New field name (press <return> to stop adding fields): dob
Field type [string]: date
Is nullable [false]: true
Unique [false]:

New field name (press <return> to stop adding fields):


  Entity generation


  created .\src\AppBundle/Entity/John.php
  created .\src\AppBundle/Resources/config/doctrine/
  created .\src\AppBundle/Resources/config/doctrine/John.orm.php
> Generating entity class G:\XAMPP\htdocs\project\src\AppBundle\Entity\John.php:
 OK!
> Generating repository class G:\XAMPP\htdocs\project\src\AppBundle\Repository\J
ohnRepository.php: OK!
> Generating mapping file G:\XAMPP\htdocs\project\src\AppBundle\Resources\config
\doctrine\John.orm.php: OK!


  Everything is OK! Now get to work :).



G:\XAMPP\htdocs\project>

And after success it will will create entity class in AppBundle\Entity; folder and repository class in AppBundle\Repository; also it will generate John.orm.php in AppBundle\Resources\config\doctrine\John.orm.php

After deleting John.orm.php file if i run php bin/console doctrine:schema:update --force then it will generate tables.

2
votes

Most of the time This error come because of entity path issue and cache. Entity php files must be in your specific folder. Normally we generate entities by command :

 doctrine:generate:entity

run command first

doctrine:cache:clear-metadata

and then try