【问题标题】:Symfony 3.4 No Metadata Classes to process ErrorSymfony 3.4 没有元数据类来处理错误
【发布时间】:2018-06-11 13:11:02
【问题描述】:

我已经安装了 symfony 3.4 和学说包

"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"

使用以下命令创建数据库

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>

每当我运行 php bin/console dictionary:schema:update --force 命令时,它都会抛出类似

的错误

没有要处理的元数据类。

我在文档中创建了实体类 http://symfony.com/doc/3.4/doctrine.html

产品实体类

<?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;
    }
}

【问题讨论】:

  • 你尝试清除缓存了吗?
  • @ImanaliMamadiev.ya 我已经清除了缓存,即使我从 var\cache 中删除了缓存文件夹

标签: php mysql symfony doctrine-orm doctrine


【解决方案1】:

是的,最后我发现问题出在John.orm.php 文件上,该文件将在我运行php bin/console doctrine:generate:entity 时生成

我使用以下命令创建了实体类

php bin/console doctrine:generate:entity

然后会提示

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>

成功后它将在AppBundle\Entity;文件夹中创建实体类,在AppBundle\Repository;中创建存储库类,它还将在AppBundle\Resources\config\doctrine\John.orm.php中生成John.orm.php

删除 John.orm.php 文件后,如果我运行php bin/console doctrine:schema:update --force,它将生成表格。

【讨论】:

    【解决方案2】:

    大多数时候出现此错误是因为实体路径问题和缓存。实体 php 文件必须在您的特定文件夹中。通常我们通过命令生成实体:

     doctrine:generate:entity
    

    先运行命令

    doctrine:cache:clear-metadata
    

    然后尝试

    【讨论】:

      猜你喜欢
      • 2019-01-12
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      相关资源
      最近更新 更多