Php Doctrine2:使用Doctrine\ORM\Mapping作为ORM不工作
我在使用条令\ORM\Mapping作为ORM时遇到问题; 我在Symfony2中创建项目,并在mysql中创建一些表。然后,我导入具有以下内容的实体: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
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