作爲元旦黑客馬拉松認爲我會採取羅布艾倫的偉大的zend framework 2 beta tutorial和取代Zend \ Db \ Table使用ZF2模塊SpiffyDoctrine和SpiffyDoctrineORM替代doctrine2。ZF2教程與SpiffyDoctrine
一切都進行得非常好,得到了實體管理器會,並設置我的實體:
<?php
namespace AlbumDoc\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="album")
*/
class Album {
/**
* @ORM\Id
* @ORM\Column(type="integer");
* @ORM\GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @ORM\Column(type="string")
*/
public $artist;
/**
* @ORM\Column(type="string")
*/
public $title;
/**
* global getter
*
* @param type $property
* @return type
*/
public function __get($property) {
return $this->$property;
}
/**
* Global setter
*
* @param type $property
* @param type $value
*/
public function __set($property, $value) {
$this->$property = $value;
}
}
由於我是新來的教義和Zend框架爲母校,我想我會做一個試驗,看看我是否可以將Entity Manager保存到數據庫。設置我的indexController的代碼如下:
$em = $this->getLocator()->get('doctrine_em');
$album = new \Application\Entity\Album();
$album->artist = 'Art Ist';
$album->title = 'Cool Title';
$em->persist($album);
$em->flush();
的問題我有它,當這個代碼運行,我得到了以下錯誤:
Class Application\Entity\Album is not a valid entity or mapped super class.
從有限的東西,我已經找到我認爲這個問題與Doctrine不知道實體路徑或與AnnotationDriver有關的事情有關。
猜測有一些需要添加到相冊模塊的配置文件,但無法找到什麼。
已更新:由於我沒有足夠的信譽點正式發佈答案,因此我會在此處添加答案。 找到解決方案。實際上有兩部分是出了什麼問題。
首先是一個愚蠢的錯誤,我忘了將module.spiffy_doctrine_orm.config.php文件的末尾的.dist放到應用程序的config/autoload目錄中。
第二部分是在這個文件中,我並沒有改變設置陣列的驅動程序設置爲指向:
'driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'namespace' => 'AlbumDoc\Entity',
'paths' => array('module/AlbumDoc/src/AlbumDoc/Entity')
)
這並不乞求它是否能夠爲每個模塊用來放置問題它是自己的實體,如果你正在爲你的應用程序設置全局實體路徑。但那可以等待另一天。
此外,eAccelerator沒有在我的MAMP本地機器上運行 – Jaijaz 2012-01-01 10:07:58