2010-08-31 4 views
4

Je travaille sur le sandbox doctrine 2 (Beta3) et j'essaie d'appliquer la convention de codage de Zend Framework en plaçant un trait de soulignement principal sur les membres de la classe privée. Lorsque je interroge Adresse, alors que ses membres privés ne sont pas soulignés, je récupère l'objet comme prévu. Lorsque j'ajoute les traits de soulignement, régénérer et repeupler la base de données, puis exécuter la même requête, j'obtiens les messages d'erreur suivants:doctrine 2 Annotations et convention de soulignement de Zend Framework

PHP Remarque: Indice indéfini: id dans ... Doctrine/ORM/Internal/Hydration/AbstractHydrator. php on line 184 PHP Erreur irrécupérable: exception non interceptée 'Doctrine \ DBAL \ DBALException' avec le message 'Type de colonne inconnu demandé.' dans ... Doctrine/DBAL/DBALException.php: 81

La requête DQL:

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

Le ZFed Adresse Classe:

<?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

Ah je vois 'sélectionnez u Entités \ Adresse u où u._id =? 1' fonctionne - notez le _id. Est-ce ainsi que cela fonctionne? – waigani

Répondre

3

vous devez écrire _ devant tous vos requêtes DQL oui.

Les traits de soulignement devant les variables sont une notation hongroise, ce que nous, en tant qu'équipe de Doctrine, n'aime pas. Même Zend Framework abandonnera ce style pour le nouveau code autant que j'ai compris. Beaucoup d'autres projets ont fait la même chose et PEAR2 a même changé leur standard à cet égard.

+1

Sondage: Devrait-on supprimer le préfixe d'éléments non publics? http://zend-framework-community.634137.n4.nabble.com/Poll-Should-underscore-prefixing-of-non-public-elements-be-dropped-td2322936.html#none Le sondage: https://spreadsheets.google.com/viewform?formkey=dEZOTGpMdjhzZDlmZGNMZVF0WnFTV2c6MQ PS: Faites confiance à beberlei, il est Doctrine2 Core-Dev;) –

+0

Ah bon à savoir - au revoir souligne. Puis-je vous diriger vers ma prochaine question s'il vous plaît: http://stackoverflow.com/questions/3624206/require-once-missing-doctrine-zend-framework – waigani

+0

La chose que je me demande cependant, c'est que la plupart du code de Doctrine est écrit avec des underscores ce préfixe les attributs de classe. J'utilise également des underscores pour les attributs private/protected, y aurait-il une possibilité de prise en charge des attributs de classe soulignés dans les entités? –

Questions connexes