1

任何人,请帮我解决这个问题。我是教义的新手。经过一段时间配置与 zend(版本 1.10.8)一起使用的学说(版本 2.3)。除了最后一步,一切正常。我有一个像这样的表“测试表”

  CREATE TABLE IF NOT EXISTS `testtable` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(250) NOT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

  INSERT INTO `testtable` (`id`, `name`) VALUES
  (1, 'test1'),
  (2, 'what');

这是实体注释

<?php
use Doctrine\ORM\Mapping as ORM;

/**
 *  @ORM\Table(name="testtable")
 *  @ORM\Entity
 *
 */
class Tallcat_Doctrine_Entity_Test
{
    /**
     * @ORM\Column(type="string")
     */
    private $name;

    /**
     * @ORM\Id @ORM\Column
     * @ORM\GeneratedValue
     */
    private $id;



    /**
     * @param string $name
     */
    public function setName($name)
    {
        $this->name = (string)$name;
    }
    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }
}

在zend的控制器中,我称之为测试:

class DoctrineController extends Zend_Controller_Action
{
    protected $em = null;

    public function init()
    {
        $this->em = \Zend_Registry::get('doctrine')->getEntityManager();
    }

    public function indexAction()
    {
        try{
            $test = new Tallcat_Doctrine_Entity_Test();
            $testMap = $this->em->getRepository('Tallcat_Doctrine_Entity_Test')-       >findAll();

            echo '<pre>';
            print_r($testMap);
            echo '</pre>';
            die();
        }catch(Exception $ex) {
            print_r($ex);die();
        }
    }
}

这是结果:

Array
(
    [0] => Tallcat_Doctrine_Entity_Test Object
        (
            [name:Tallcat_Doctrine_Entity_Test:private] => 
            [id:Tallcat_Doctrine_Entity_Test:private] => 1
        )

    [1] => Tallcat_Doctrine_Entity_Test Object
        (
            [name:Tallcat_Doctrine_Entity_Test:private] => 
            [id:Tallcat_Doctrine_Entity_Test:private] => 2
        )

)

我不知道文件名有什么问题,它无法加载。我尝试保存一条记录,它可以保存Id,除了文件名。有人可以帮忙。

4

1 回答 1

0

我自己解决了。问题是:Doctrine 在加载之前缓存了映射,所以旧代码没有更新。所以我重新启动计算机(愚蠢的方式)以清除缓存。它工作完美。谢谢

于 2013-11-08T02:35:15.310 回答