Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Doctrine2:使用Doctrine\ORM\Mapping作为ORM不工作_Php_Symfony_Orm_Doctrine Orm - Fatal编程技术网

Php Doctrine2:使用Doctrine\ORM\Mapping作为ORM不工作

Php Doctrine2:使用Doctrine\ORM\Mapping作为ORM不工作,php,symfony,orm,doctrine-orm,Php,Symfony,Orm,Doctrine Orm,我在使用条令\ORM\Mapping作为ORM时遇到问题; 我在Symfony2中创建项目,并在mysql中创建一些表。然后,我导入具有以下内容的实体: php app/console doctrine:mapping:import AcmeMainBundle annotation 接下来,我生成实体 php app/console doctrine:generate:entities AcmeMainBundle 看起来都不错: <?php namespace Acme\MainB

我在使用条令\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;
.....
在那里创建自己的选择与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
 */
我不支持任何错误

我使用最新的composer.json在Windows8上安装Symfony2和doctrine,所有安装步骤都正确

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;

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

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

doctrine:mapping:import AcmeMainBundle annotation

我看到了注释,但不起作用。

您的PHP版本是什么?Symfony2需要5.3.8+才能运行注释:)您可以运行
php app/check.php
来检查您的安装是否足以运行Symfony2。**强制性要求**OK php版本必须至少为5.3.3(已安装5.3.13)。所有要求都可以。@Stoupa101,我几个月前就有此错误,当时,我的服务器上最近安装了一个名为“eAccelerator”的php扩展。所以,当我暂时禁用它时,教义错误消失了!
doctrine:mapping:import AcmeMainBundle annotation