Doctrine orm Zend框架2+;Doctrine2-未检测到实体

Doctrine orm Zend框架2+;Doctrine2-未检测到实体,doctrine-orm,zend-framework2,Doctrine Orm,Zend Framework2,嗨,我使用composer创建了ZF2骨架应用程序。 已安装条令模块、条令orm模块等。编写器文件如下: { “名称”:“zendframework/skeleton应用程序”, “说明”:“ZF2的框架应用程序”, “许可证”:“BSD-3-条款”, “关键词”:[ “框架”, “zf2” ], “主页”:http://framework.zend.com/", “要求”:{ “php”:“>=5.3.3”, “zendframework/zendframework”:“2.2.*”, “条令

嗨,我使用composer创建了ZF2骨架应用程序。 已安装条令模块、条令orm模块等。编写器文件如下:

{
“名称”:“zendframework/skeleton应用程序”,
“说明”:“ZF2的框架应用程序”,
“许可证”:“BSD-3-条款”,
“关键词”:[
“框架”,
“zf2”
],
“主页”:http://framework.zend.com/",
“要求”:{
“php”:“>=5.3.3”,
“zendframework/zendframework”:“2.2.*”,
“条令/条令orm模块”:“0.*”,
“条令/数据装置”:“开发主机”,
“zendframework/zend开发工具”:“开发大师”,
“条令/迁移”:“开发大师”,
“bjyoungblood/bjy档案器”:“开发大师”,
“zendframework/zftool”:“开发主机”
}
}

将条令配置添加到模块中,如下所示:

“条令”=>数组(
“驱动程序”=>数组(
__名称空间“”实体=>数组(
“类”=>“条令\ORM\Mapping\Driver\AnnotationDriver”,
//“缓存”=>“数组”,
“路径”=>数组(
__目录.'/../src/'..\u名称空间.\u.'./Entity',,
)
),
“orm_默认值”=>数组(
“驱动程序”=>数组(
__名称空间。\u.'\Entity'=>\u名称空间\u.'\u实体'
)
))),

我将我的实体添加到: module/Application/src/Application/Entity/User.php

但当我跑步时: php zf.php orm:info

我得到以下信息:

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

如果我尝试

php zf.php orm:schema工具:创建

我得到:

没有要处理的元数据类

我怎样才能让条令生成我的数据库?我做错了什么

编辑: 以下是评论中要求的实体代码:


条令配置中的
\uuuuu NAMESPACE\uuuuu
指令一定有问题:您的配置可能没有使用名称空间,因此
\uuuu NAMESPACE\uuuu
将解析为主名称空间

您可以尝试这样的配置:

'doctrine' => array(
    'driver' => array(
        'application_driver' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
            'cache' => 'array',
            'paths' => array(
                'module/Application/src/Application/Entity',
            ),
        ),
无需使用
\uuuu DIR\uuuu
,您可以在调用ZendaApplication时使用应用程序根目录(在
public/index.php
chdir(dirname(\uu DIR));

最后,还可以指定实体的表名以及映射列的getter/setter:

<?php
namespace Application\Entity;
use Doctrine\ORM\Mapping as ORM;
/** 
 * @ORM\Entity 
 * @ORM\Table(name="user")
 */
class User {
    /**
     * @var int
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    protected $id;

    /** 
     * @var string
     * @ORM\Column(type="string") 
     */
    protected $fullName;

    /** 
     * @return int 
     */
    public function getId()
    {
        return $this->id;
    }

    /** 
     * @param int $id
     */
    public function setId($id)
    {
        $this->id = $id;
    }

    /** 
     * @return string
     */
    public function getFullName()
    {
        return $this->fullName;
    }

    /** 
     * @param string $fullname
     */
    public function setFullName($fullname)
    {
        $this->fullName= $fullname;
    }
}

问题在于过时的parallels工具。
在做了一些调查之后,我发现有一个ne版本的parallels工具可用

手动更新工具并重新启动虚拟机解决了问题。 即使是原始代码也没有什么问题,而且在更新后一切都很好。 我猜这其中也有一个bug,但我在网上没有找到任何关于它的参考资料


谢谢您的帮助。

您在配置文件中添加了名称空间了吗?是的。在文件的顶部是名称空间应用程序;否则会出现致命错误…你能显示你的实体代码吗?当然,我把它添加到了原始问题中。小更新,我实际上是在虚拟机中运行这个。从主机装入文件的文件夹。如果我将文件复制到tmp文件夹,它就可以正常工作。如果我在挂载的文件夹中运行php zf.php orm:info,我会得到一个错误。无法工作。我怀疑它不工作,因为它是一个挂载文件夹。正如我在编辑中提供的其他信息。因为你的问题是由完全不同的东西引起的,所以对你不起作用的向下投票答案在这里不是最好的做法,因此,只说“答案”不会带来任何有助于解决问题的东西。提交的代码是正确的,他们都试图解决它。所有的答案都在问题更新完成后发布,说明如果粘贴到tmp文件夹,代码工作正常。你的问题让我们有点发火:你主要是描述配置和代码,只是一小部分信息(“小更新”)关于实际问题。落选的人感觉像是在惩罚那些追随你问题主要方向的人,而不是那些隐藏的问题。我下次的建议是:更新你的问题,让真正的问题得到关注。
<?php
namespace Application\Entity;
use Doctrine\ORM\Mapping as ORM;
/** 
 * @ORM\Entity 
 * @ORM\Table(name="user")
 */
class User {
    /**
     * @var int
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    protected $id;

    /** 
     * @var string
     * @ORM\Column(type="string") 
     */
    protected $fullName;

    /** 
     * @return int 
     */
    public function getId()
    {
        return $this->id;
    }

    /** 
     * @param int $id
     */
    public function setId($id)
    {
        $this->id = $id;
    }

    /** 
     * @return string
     */
    public function getFullName()
    {
        return $this->fullName;
    }

    /** 
     * @param string $fullname
     */
    public function setFullName($fullname)
    {
        $this->fullName= $fullname;
    }
}