原则2:使用DoctrineORMMapping作为ORM不起作用


Doctrine2: use DoctrineORMMapping as ORM not working

我在使用Doctrine''ORM''Mapping作为ORM时遇到问题;我在 Symfony2 中创建项目并在 mysql 中创建一些表。然后我导入ENtities:

php app/console doctrine:mapping:import AcmeMainBundle annotation

接下来,我生成实体

php app/console doctrine:generate:entities AcmeMainBundle

一切看起来都不错:

<?php
namespace Acme'MainBundle'Entity;
use Doctrine'ORM'Mapping as ORM;
/**
 * Article
 *
 * @ORM'Table(name="article")
 * @ORM'Entity
 */
class Article
{
/**
 * @var integer
 *
 * @ORM'Column(name="id", type="integer", nullable=false)
 * @ORM'Id
 * @ORM'GeneratedValue(strategy="IDENTITY")
 */
private $id;
.....

但是,这个orm不起作用。当我尝试使用存储库时:

* @ORM'Entity(repositoryClass="Acme'MainBundle'Repository'ArticleRepository")

并在那里使用查询构建器创建自己的选择,我没有看到此功能。在控制器中,我尝试查看以下方法:

var_dump(get_class_methods($this->getDoctrine()->getManager()->getRepository('AcmeMainBundle:Article')));

但返回的只是:

array (size=12)
0 => string '__construct' (length=11)
1 => string 'createQueryBuilder' (length=18)
2 => string 'createNamedQuery' (length=16)
3 => string 'createNativeNamedQuery' (length=22)
4 => string 'clear' (length=5)
5 => string 'find' (length=4)
6 => string 'findAll' (length=7)
7 => string 'findBy' (length=6)
8 => string 'findOneBy' (length=9)
9 => string '__call' (length=6)
10 => string 'getClassName' (length=12)
11 => string 'matching' (length=8)

没有我的函数,在我发现任何ORM不起作用之后,当我尝试在注释中出错时

/**
 * Article
 *
 * @ORM'XXXXXXXXXXXXXXXXXTable(name="article")
 * @ORM'Entity
 */

我不支持任何错误。

我在Windows8上安装了Symfony2和doctrine,作曲家与最新的composer.json,所有安装步骤都正确。

app/autoload.php 是:

<?php
use Doctrine'Common'Annotations'AnnotationRegistry;
use Composer'Autoload'ClassLoader;
/**
 * @var ClassLoader $loader
 */
$loader = require __DIR__.'/../vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
return $loader;

我不知道什么时候发现此错误。实体工作,但 ORM 映射不工作。请告诉我 com 线索,当我可能找到时。

谢谢斯图帕

问题已解决:当我导入实体时,我忘记了第一步:

doctrine:mapping:convert --force --from-database xml ./src/Acme/MainBundle/Resources/config/doctrine/metadata/orm

下一步:

doctrine:mapping:import AcmeMainBundle annotation

我看到注释但不起作用。