【问题标题】:Doctrine2: use Doctrine\ORM\Mapping as ORM not workingDoctrine2:使用 Doctrine\ORM\Mapping 作为 ORM 不起作用
【发布时间】:2013-11-11 15:26:22
【问题描述】:

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

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

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

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 上使用带有最新 composer.json 的作曲家安装 Symfony2 和教义,所有安装步骤都正确执行。

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 线索,我什么时候可以找到。

感谢斯托帕

【问题讨论】:

  • 你的 PHP 版本是多少? Symfony2 需要 5.3.8+ 才能使注释工作:) 您可以运行 php app/check.php 来检查您的安装是否足以运行 symfony2。
  • ** 强制要求 ** OK PHP 版本必须至少为 5.3.3(安装了 5.3.13)所有要求都可以。
  • @Stoupa101,几个月前我遇到了这个错误,当时我的服务器上最近安装了一个名为“eAccelerator”的 php 扩展。所以,当我暂时禁用它时,教义错误消失了!
  • @Stoupa101,什么是 Doctrine\ORM\Mapping 作为 ORM 的?

标签: php symfony orm doctrine-orm


【解决方案1】:

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

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

下一步:

doctrine:mapping:import AcmeMainBundle annotation

我看到注释但不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2015-07-31
    • 2022-08-08
    • 2022-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多