可能的数据库配置问题

时间:2013-02-06 17:13:43

标签: doctrine-orm zend-framework2

我是一名新的Zend开发者,我有一些受孕问题(尤其是教条问题)。

我有一个名为MyAuthenticationProcess的类。 该类试图通过在数据库上验证其身份来验证用户。

正如我在互联网上看到的那样,我应该实现3项内容,以便与我的数据库进行通信。

首先,我必须在module.config.php中添加这些行

'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'      
                )       
            )   
    )       
),  

其次,我必须创建一个包含我的实体的文件。我在Authentification / Entity / User.php

中创建了这个文件

以下是此文件的代码:

<?php
namespace Authentification\Entity;

use Doctrine\ORM\Mapping as ORM;
use Zend\InputFilter\InputFilter;
use Zend\InputFilter\Factory as InputFactory;
use Zend\InputFilter\InputFilterAwareInterface;
use Zend\InputFilter\InputFilterInterface;


   /**
 * A User table.
 *
 * @ORM\Entity
 * @ORM\Table(name="user")
 * @property string $login
 * @property string $password
 * @property int $id
 */

class User {

/**
 * @ORM\Id
 * @ORM\Column(type="integer");
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;
/**
 * @ORM\Column(type="string")
 */
protected $login;

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


/**
 * Magic getter to expose protected properties.
 *
 * @param string $property
 * @return mixed
 */
public function __get($property)
{
    return $this->$property;
}

/**
 * Magic setter to save protected properties.
 *
 * @param string $property
 * @param mixed $value
 */
public function __set($property, $value)
{
    $this->$property = $value;
}


}
?>

为了完成,我将此配置添加到此文件中:config / autoload / local.php

    <?php

return array(


    'doctrine' => array(
        'connection' => array(
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host' => 'localhost',
                    'port' => '3306',
                    'user' => 'root',
                    'password' => '',
                    'dbname' => 'zf2tutorial',
                )
            )
        )
    ),
);

我现在遇到的问题是访问我的数据库。 我想这是配置问题。

在我的班级MyAuthenticationProcess中,我试图获取我的表“User”的所有条目。但我不能。

以下是我过去常用的代码:

    $users = $this->getEntityManager()->getRepository('Authentification\Entity\User')->findAll()   ;
    var_dump($users) ;

这是我得到的错误:

<br />
<b>Fatal error</b>:  Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'Zend\View\Renderer\PhpRenderer::render: Unable to render template &quot;layout/layout&quot;; resolver could not resolve to a file' in xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php:457
Stack trace:
#0 xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\View\View.php(201): Zend\View\Renderer\PhpRenderer-&gt;render(Object(Zend\View\Model\ViewModel))
#1 xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\Mvc\View\Http\DefaultRenderingStrategy.php(126): Zend\View\View-&gt;render(Object(Zend\View\Model\ViewModel))
#2 [internal function]: Zend\Mvc\View\Http\DefaultRenderingStrategy-&gt;render(Object(Zend\Mvc\MvcEvent))
#3 xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(460): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) in <b>\xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php</b> on line <b>457</b><br />

为了确保这是配置问题,我试图通过使用以下方法知道连接是否已建立:

    $users = $this->getEntityManager()->getConnection()   ;
    var_dump($users) ;

我很惊讶地发现用户等于NULL。

你知道问题出在哪里吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我终于找到了问题所在的地方= D

这是我数据库中的表结构。它与我的实体文件不相似,所以我改变了它,现在它可以工作。

希望我的帖子可以帮助其他有同样问题的人。