【问题标题】:No mapped ORM entities, Using doctrine 2 and Zend Framework 2没有映射的 ORM 实体,使用学说 2 和 Zend Framework 2
【发布时间】:2023-04-05 23:02:01
【问题描述】:

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

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

$ 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~

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

【问题讨论】:

  • 代码很多,但如果您能多花一点时间来解释您的实际问题,那将会很有帮助。
  • 为清楚起见,已对问题进行了编辑

标签: php zend-framework doctrine-orm


【解决方案1】:

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

例如,module.config.php 上的原始命名空间是“Users”,我将其更改为“User”。像魅力一样工作。

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

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

注意一致性窥视:)

【讨论】:

    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多