2010-08-31 41 views
4

我正在通過doctrine 2(Beta3)沙盒,並試圖應用Zend框架將編碼約定放置到私有類成員的前導下劃線。當我查詢地址,而其私人成員不強調,我按預期檢索對象。當我添加下劃線時,重新生成並重新填充數據庫,然後運行相同的查詢,我收到以下錯誤消息:doctrine 2註解和Zend框架下劃線約定

PHP注意:未定義索引:id in ... Doctrine/ORM/Internal/Hydration/AbstractHydrator。 php 184行 PHP致命錯誤:未知的異常'Doctrine \ DBAL \ DBALException',消息'請求的未知列類型'。在...主義/ DBAL/DBALException.php:81

的DQL查詢:

$q = $em->createQuery('select u from Entities\Address u where u.id = ?1'); 
$q->setParameter(1, '1'); 
$address = $q->getSingleResult(); 

的ZFed Address類:

<?php 

namespace Entities; 

/** @Entity @Table(name="addresses") */ 
class Address 
{ 
    /** 
    * @Id @Column(type="integer", length=11, name="id") 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    private $_id; 

    /** @Column(type="string", length=255, name="street") */ 
    private $_street; 

    public function getId() 
    { 
     return $this->_id; 
    } 

    public function getStreet() 
    { 
     return $this->_street; 
    } 

    public function setStreet($street) 
    { 
     $this->_street = $street; 
    } 

} 
+0

啊我看到'從實體選擇你\地址你在哪裏u._id =?1'的作品 - 注意_id。這是如何工作的? – waigani 2010-08-31 22:46:20

回答

3

你會寫_眼前的一切你的DQL查詢是。

變量前面的下劃線是某種匈牙利符號,我們作爲學說團隊不喜歡。就我所知,即使Zend Framework也會爲新代碼放棄這種風格。許多其他項目也是如此,PEAR2甚至在這方面改變了他們的標準。

+1

民意調查:是否應該刪除非公共元素的下劃線前綴? http://zend-framework-community.634137.n4.nabble.com/Poll-Should-underscore-prefixing-of-non-public-elements-be-dropped-td2322936.html#none 投票: https://spreadsheets.google.com/viewform?formkey=dEZOTGpMdjhzZDlmZGNMZVF0WnFTV2c6MQ PS:Trust beberlei,他是Doctrine2 Core-Dev;) – 2010-09-01 07:08:56

+0

啊,很高興知道 - 再見強調。我可以指出你對我的下一個問題:http://stackoverflow.com/questions/3624206/require-once-missing-doctrine-zend-framework – waigani 2010-09-02 06:06:46

+0

但我想知道的是,大多數Doctrine的代碼是用下劃線該類爲屬性的前綴。我還爲私有/受保護的類屬性使用下劃線,是否有機會在實體內強調類屬性的支持? – 2010-10-29 01:31:57