没有映射的ORM实体,使用doctrine 2和Zend Framework 2

时间:2016-01-02 21:49:39

标签: php zend-framework doctrine-orm

它可能是我的配置文件中的内容,因为它没有在任何地方显示映射,但我已经检查过,根据所有来源它似乎是正确的。

我尝试了几种方法来尝试解决这个问题,但无论如何,一旦我运行

$ vendor/bin/doctrine-module orm:generate:entities -v module/Users/src/Users/Entity/ 

我得到了

No Metadata Classes to process.

如果我跑

$ vendor/bin/doctrine-module orm:info

我得到了

[例外]根据当前配置,您没有任何映射的Doctrine ORM实体。如果您有实体或映射文件,则应检查映射配置是否存在错误。

这里是module.config.php的内容,该模块名为' Users'。

<?php
namespace Users;

return array(
  // ...
  // Doctrine config
  'doctrine' => array(
    'driver' => array(
      __NAMESPACE__ . '_driver' => array(
        'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
          'cache' => 'array',
          'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
      ),
        'orm_default' => array(
          'drivers' => array(
            __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
          )
        )
    )
  )
);

以下是我的实体,以防万一。

<?php 

namespace Users\Entity;

  //Imports from mapping classes
  use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Table;
use Doctrine\ORM\Mapping\Index;
use Doctrine\ORM\Mapping\Id;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Column;

// Entity and index creation
/**
 *User Entity
 *
 *@Entity
 *@Table(indexes={
 *    @Index(name="idx_username", columns="username"),
 *    @Index(name="idx_email", columns="email")
 *})
 */
class User
{
  /**  
   *@var int
   *
   *@Id
   *@generatedValue
   *
   *@Column(type="integer")
   */
  protected $id=NULL;
  /**  
   *@var string
   *
   *@Column(type="string",length=50,nullable=true)
   */
  protected $username=NULL;
  /**
   *@var string
   *
   *@Column(type="string",length=254,nullable=true)
   */
  protected $email=NULL;
  /**
   *@ORM\Column(type="binary",length=60,nullable=true)
   */
  protected $password=NULL;
  /**
   *@var int
   *
   *@Column(type="integer"nullable=true)
   */
  protected $avatar_id=NULL;
  /**
   *@var string
   *
   *@Column(type="string",length=25,nullable=true)
   */  
  protected $name=NULL;
  /**
   *@var string
   *
   *@Column(type="string",length=50,nullable=true)
   */
  protected $surname=NULL;
  /**
   *@var string
   *
   *@Column(type="string",length=255)
   */
  protected $bio='';
  /**
   *@var string
   *
   *@Column(type="string",length=255)
   */  
  protected $location='';
  /**
   *@var int
   *
   *@Column(type="smallint",nullable=true)
   */
  protected $gender=NULL;
}

最后来到我的module.php

<?php

namespace Users;

use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;

class Module
{

  public function onBootstrap(MvcEvent $e)
  {
    $eventManager        = $e->getApplication()->getEventManager();
    $moduleRouteListener = new ModuleRouteListener();
    $moduleRouteListener->attach($eventManager);
  }
  public function getConfig()
  {
    return include __DIR__ . '/config/module.config.php';
  }

  public function getAutoloaderConfig()
  {
    return array(
      'Zend\Loader\StandardAutoloader' => array(
        'namespaces' => array(
          __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
        ),
      ),
    );
  }
}

我模块的树

Users
    ├── config
    │   └── module.config.php
    ├── #Module.php#
    ├── Module.php
    └── src
        └── Users
            └── Entity
                ├── User.php
                └── User.php~

非常感谢任何和所有帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我终于找到了答案,问题是我使用的是 NAMESPACE 属性,而我的实体与module.config.php上的命名空间名称不同我解决了它通过更改&#39;用户&#39;中的所有命名空间用户并更改所有文件模块名称。

例如,module.config.php上的原始命名空间是&#39;用户&#39;,我将其更改为&#39; User&#39;。像魅力一样工作。

这是我最后得到的更正文件的树。

User
├── config
│   ├── module.config.php
│   └── module.config.php~
├── Module.php
├── Module.php~
└── src
    └── User
        └── Entity
            ├── User.php
            └── User.php~

注意一致性窥视:)

相关问题