Aller au menu - Aller au contenu

Utilisation d'un ORM : les bases de Doctrine

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2 
Pseudo Commentaire
Page Précédente  1  2 
Hors ligne Nami Doc # Posté le 21/12/2009 à 19:11:55
Lamaer taler dansk

Ah ! (Bon sinon j'ai fini le plan :p)

La flemme conquerra le monde !
Secret (cliquez pour afficher)
Image utilisateur
 
Hors ligne Mimos@ # Posté le 23/12/2009 à 01:13:48
Avatar

Un petit PDF pas mal sur Doctrine.
Il est pour la version 1.1
http://www.doctrine-project.org/Doctrine-Cheat-Sheet.pdf

Processeur: Intel Core I5 750; Carte Mère: Asus P7P55D Pro;
RAM: GSkill RH RipJaws 2x2Go DDR3 PC3-12800 Cas7;
DD Sys: Crucial M4 128Go; DD Data: SAMSUNG 500Go SpinPoint F3;
Carte Graphique: Sapphire HD4890 Vapor-X 1Go;
Boitier: LANCOOL DragonLord K58; Alimentation: Corsair HX520.
 
Hors ligne Nami Doc # Posté le 24/12/2009 à 16:37:00
Lamaer taler dansk

'Faut juste changer les Doctrine => Doctrine_Core (pour le plus gros du travail).

Je parle régulièrement avec Jonathan Wage (le créateur, qui bosse actuellement sur Sympal, sur lequel je l'aide), et, bon ... 'Faudra attendre la v2 pour un nouveau CS =/

PS: Tu comptes en faire un big-tuto ou je continue mon big tuto :p ?

La flemme conquerra le monde !
Secret (cliquez pour afficher)
Image utilisateur
 
Hors ligne Mimos@ # Posté le 24/12/2009 à 18:11:01
Avatar

Moi ?
Si oui, non aucun tuto en vu, je peux aider si vraiment mais sans plus. Je n'ai pas vraiment de temps en se moment.

Processeur: Intel Core I5 750; Carte Mère: Asus P7P55D Pro;
RAM: GSkill RH RipJaws 2x2Go DDR3 PC3-12800 Cas7;
DD Sys: Crucial M4 128Go; DD Data: SAMSUNG 500Go SpinPoint F3;
Carte Graphique: Sapphire HD4890 Vapor-X 1Go;
Boitier: LANCOOL DragonLord K58; Alimentation: Corsair HX520.
 
Hors ligne Nami Doc # Posté le 24/12/2009 à 21:21:45
Lamaer taler dansk

Non non, je parle à Christophetd vu que ce tuto est vraiment un mini-tuto :p.

Si je continue, je maitrîse à peut près toutes les fonctionnalitées de Doctrine mais si tu veux apporter ta pierre à l'édifice sur un chapitre qui te tiens à coeur, pas de problèmes :)

La flemme conquerra le monde !
Secret (cliquez pour afficher)
Image utilisateur
 
Hors ligne Mimos@ # Posté le 25/12/2009 à 16:49:19
Avatar

Non je ne maitrise pas suffisamment pour expliquer l'utilisation. Disons que je ne connais que les fonctionnalités qui me servent.
Mais je serais très intéressé par ton big-tuto, puisqu'il n'y a pas de doc en français et l'anglais me rebut un peu.

Processeur: Intel Core I5 750; Carte Mère: Asus P7P55D Pro;
RAM: GSkill RH RipJaws 2x2Go DDR3 PC3-12800 Cas7;
DD Sys: Crucial M4 128Go; DD Data: SAMSUNG 500Go SpinPoint F3;
Carte Graphique: Sapphire HD4890 Vapor-X 1Go;
Boitier: LANCOOL DragonLord K58; Alimentation: Corsair HX520.
 
Hors ligne MrKooky # Posté le 25/12/2009 à 19:54:37
10h
Avatar
Flux RSS

Ville : Paris
Pays : France métropolitaine
Études : Paris 6 - Université Pierre et Marie Curie (Jussieu)

Première lecture: viite, le cachet d'aspirine!
2nde lecture: Ca passe beaucoup mieux.
En tous cas, merci pour ce tuto!
 
Hors ligne QxOrm # Posté le 15/05/2010 à 12:35:47
Avatar

Si vous recherchez un équivalent C++ :
http://www.siteduzero.com/forum-83-513 [...] ce-qxorm.html
Hors ligne xXToToSeXx # Posté le 15/05/2010 à 12:36:46
Ou pas !

Ville : Marseille
Pays : France métropolitaine

Cool jamais entendu des ORM merci l'ami :)
Hors ligne MisterDo # Posté le 15/05/2010 à 14:21:45
\_/O<
Avatar

Génial ! Il me reste plus qu'à traduire certaines choses en .yml pour Symfony (surtout les jointures) et c'est bon ;) . (Un grand merci pour ce tuto)
 
Hors ligne kryptos # Posté le 16/05/2010 à 11:04:16
Avatar

Ville : Sainte-foy-les-lyon
Pays : France métropolitaine
Études : Gamagora

@Skydreamer et Nami Doc
Je suis d'accord avec Skydreamer, Doctrine n'est pas intégré à Zend. Il est possible de le faire soi-même cependant. Mais il ne faut pas confondre intégration supportée par un framework et contribution de la communauté.

Doctrine est lié à Symphony. Quant à Zend, l'abstraction des Zend_Db et Zend_Db_Table est largement suffisante (et fonctionne en interaction avec le reste du framework). Donc je ne vois pas l'intérêt de l'utiliser dans Zend.

Ceci dit, bon tuto (qui mériterait un petite réorganisation pour être un peu mieux structuré).

Venez tester la version finale de notre jeu de course spatiale Space Racer (conçu avec Unity 3D)
Voir le sujet sur le forum.
 
Hors ligne Tristou # Posté le 20/05/2010 à 13:52:50
"En mode"
Avatar

J'aurais une question : j'ai lu le tuto mais malgré ça, je me pose la question de savoir pourquoi un ORM est mieux par exemple que utiliser PDO ?

Lovely old and expected me - Une pomme par jour éloigne le médecin. Oui, mais faut bien viser !
 
Hors ligne chione # Posté le 24/05/2010 à 17:23:46
Avatar

Études : ISTOM

Un orm te permet de stocker des requêtes d'un coté et donc de séparer clairement tes requêtes de ton code.

Un avantage va être de pouvoir réutiliser tes requêtes plusieurs fois dans des endroits fifférents de ton site sans avoir à tout réécrire...

Tu pourrais imaginer une page news (avec les 5 premiers commentaires à chaque fois pour voir toutes les news paginées dans ton site et sur la première page de ton site juste les 5 premières news de ton site (avec égalment pour chaqu'une les 5 dernier commentaires).

Pour cet exemple tu fais juste une méthode dans ton ORM qui va te récuperer les news avec les 5 dernier commentaires. tu ne réécris donc pas le code pour faire 2 fois la même chose.

Et du coup si ta table news est modifié à l'avenir (le nom d'un champ change ou tu veux renvoyer finalement les 5 derniers commentaires validés au lieu des 5 derniers commentaires) tu ne change qu'une fois ta méthode.

Ca permet aussi de faire un code plus propre et plus rangé. si y'a un problème avec une requête, pas la peine d'aller fouiller les 36000 pages php de ton site, si l'erreur est au niveau de la table news tu ouvres model/news.class.php et tu résout ton soucis là. C'est d'autant plus avantageux quand tu travailles dans un projet à plusieurs.

Un autre avantage c'est que vu que c'esty orienté objet, rien ne t'empêche de faire une autre classe entre tes classes de table et la classe Doctrine pour faires des opérations qui se répètent... Par exemple tu veux que toutes tes tables quand tu fais delete en fait n'effacent jamais les enregistrements mais à la place mettent un champ deleted_at = 'date_du_jour'. Ainsi tu pourras récupérer les enregitrements effacés par erreur. Dans ce cas tu peux gérer très facilement ça en changeant la méthode ->delete() via l'héritage des classes. et pareil pour la méthode execute qui rajoutera pour chaque requête "where deleted_at = null" sans que tu ais à t'en occuper pour chaque requête.
 
Hors ligne robin850 # Posté le 25/06/2010 à 20:24:23
Avatar

Ville : Avesnes-sur-helpe
Pays : France métropolitaine

Punaise ! C'est vraiment génial Doctrine ! o_O

Je vais prendre ça pour monde site parce que c'est vraiment flexible, simple à utiliser et la syntaxe est super propre par rapport à un <?php $bdd->query('SELECT....'); ?> AMHA. Ton tutoriel est super bien expliqué, je viens de découvrir un truc génial, merci . :)

Cordialement, Robin.

Pardonnez mes fautes d'orthographe.
Image utilisateur


Utilisation de Twig, un moteur de Templates
 
Hors ligne Nami Doc # Posté le 26/06/2010 à 13:10:08
Lamaer taler dansk

Non et le tutoriel donne d'assez mauvaises pratiques en réalité. Mais ça reste une bonne base pour commencer.

La flemme conquerra le monde !
Secret (cliquez pour afficher)
Image utilisateur
 
Hors ligne ond # Posté le 15/10/2010 à 12:00:18

il n'y a pas d'exemple de code avec un "where" dommage :(
Hors ligne GiBoM # Posté le 20/12/2010 à 17:05:00

$q = Doctrine_Query::create()
->select('id')
->from('utilisateur')
->where('email= ?',$email)
->fetchOne();
Voila un exemple de clause where
tu recupere la valeur par un tableau associatif $q['id']
;)
Hors ligne LegendPJ # Posté le 11/04/2012 à 16:37:22
Avatar

Ville : Lyon
Pays : France métropolitaine
Études : IUT Grenoble 2

Salut,

tout d'abord, super tutoriel ! Très adaptable ! :)
ça m'a beaucoup aidé !!

Voilà, j'aurais une question, je code sous Zend Framework, et je viens d'intégrer Doctrine à mon projet, et je suis face à un petit problème, j'aimerais savoir quand est ce qu'une variable est vide, mais pas n'importe laquelle :

(je me permet de reprendre un bon de code du tuto)


Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php
foreach($liste_news as $news) {
	echo $news->titre.'<br />';
	echo '<p>Commentaires sur cette news :';
	echo '<ul>';

// C'est ICIIIIIIIIIIIIIIIIIIIIIIIIIII 

	foreach($news->commentaires as $commentaire) {
		echo '<li>'.$commentaire->contenu.'</li>';
	}
	echo '</ul></p><hr />';
}


là où j'ai mis c'est ici je voudrais savoir si le tableau (il me semble que c'est un tableau) $news->commentaires est vide ou pas, et ce avant le foreach ! est ce que cela est possible ? sinon, y aurait-il une autre solution ?

Merci d'avance :D
Hors ligne christophetd # Posté le 11/04/2012 à 17:04:37
Regardez-moi !
Avatar

Avis : Très bon
Flux RSS

Ville : Gap
Pays : France métropolitaine

Salut. :)
Tout d'abord $news->commentaires n'est pas à proprement parler un array, il s'agit d'une instance d'une classe implémentant l'interface ArrayAccess.
Je ne te garantis rien, mais tu peux essayer de le tester avec un empty :

Code : PHP
1
2
3
4
<?php
if(empty($news->commentaires)) {
    // Pas de news
}
 
Hors ligne LegendPJ # Posté le 11/04/2012 à 17:14:52
Avatar

Ville : Lyon
Pays : France métropolitaine
Études : IUT Grenoble 2

Merci de ta réponse ! Surtout aussi vite :)

Malheureusement j'avais déjà essayé avec empty...mais il semblerait (après un petit var_dump) que celui-ci soit loin d'être vide...donc ça ne fonctionne pas comme ceci...

Aurais-tu une autre idée ? :S
Hors ligne christophetd # Posté le 11/04/2012 à 19:25:01
Regardez-moi !
Avatar

Avis : Très bon
Flux RSS

Ville : Gap
Pays : France métropolitaine

Peux-tu me donner ce que renvoie le var_dump ?
 
Hors ligne LegendPJ # Posté le 11/04/2012 à 20:56:39
Avatar

Ville : Lyon
Pays : France métropolitaine
Études : IUT Grenoble 2

Je te préviens...c'est long ^^
var_dump($e->sousencad);


object(Doctrine_Collection)[107]
protected 'data' =>
array
0 =>
object(Sousencadre)[108]
protected '_node' => null
protected '_id' =>
array
...
protected '_data' =>
array
...
protected '_values' =>
array
...
protected '_state' => int 1
protected '_lastModified' =>
array
...
protected '_modified' =>
array
...
protected '_oldValues' =>
array
...
protected '_errorStack' => null
protected '_references' =>
array
...
protected '_pendingDeletes' =>
array
...
protected '_pendingUnlinks' =>
array
...
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 8
protected '_table' =>
object(Doctrine_Table)[87]
...
protected '_locator' => null
protected '_resources' =>
array
...
1 =>
object(Sousencadre)[116]
protected '_node' => null
protected '_id' =>
array
...
protected '_data' =>
array
...
protected '_values' =>
array
...
protected '_state' => int 1
protected '_lastModified' =>
array
...
protected '_modified' =>
array
...
protected '_oldValues' =>
array
...
protected '_errorStack' => null
protected '_references' =>
array
...
protected '_pendingDeletes' =>
array
...
protected '_pendingUnlinks' =>
array
...
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 10
protected '_table' =>
object(Doctrine_Table)[87]
...
protected '_locator' => null
protected '_resources' =>
array
...
2 =>
object(Sousencadre)[117]
protected '_node' => null
protected '_id' =>
array
...
protected '_data' =>
array
...
protected '_values' =>
array
...
protected '_state' => int 1
protected '_lastModified' =>
array
...
protected '_modified' =>
array
...
protected '_oldValues' =>
array
...
protected '_errorStack' => null
protected '_references' =>
array
...
protected '_pendingDeletes' =>
array
...
protected '_pendingUnlinks' =>
array
...
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 11
protected '_table' =>
object(Doctrine_Table)[87]
...
protected '_locator' => null
protected '_resources' =>
array
...
3 =>
object(Sousencadre)[118]
protected '_node' => null
protected '_id' =>
array
...
protected '_data' =>
array
...
protected '_values' =>
array
...
protected '_state' => int 1
protected '_lastModified' =>
array
...
protected '_modified' =>
array
...
protected '_oldValues' =>
array
...
protected '_errorStack' => null
protected '_references' =>
array
...
protected '_pendingDeletes' =>
array
...
protected '_pendingUnlinks' =>
array
...
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 12
protected '_table' =>
object(Doctrine_Table)[87]
...
protected '_locator' => null
protected '_resources' =>
array
...
protected '_table' =>
object(Doctrine_Table)[87]
protected '_data' =>
array
empty
protected '_identifier' => string 'id' (length=2)
protected '_identifierType' => int 1
protected '_conn' =>
object(Doctrine_Connection_Mysql)[10]
protected 'driverName' => string 'Mysql' (length=5)
protected 'dbh' =>
object(PDO)[74]
...
protected 'tables' =>
array
...
protected '_name' => string 'doctrine' (length=8)
protected 'isConnected' => boolean true
protected 'supported' =>
array
...
protected 'pendingAttributes' =>
array
...
private 'modules' (Doctrine_Connection) =>
array
...
protected 'properties' =>
array
...
protected 'serverInfo' =>
array
...
protected 'options' =>
array
...
protected '_count' => int 3
protected '_usedNames' =>
array
...
protected 'attributes' =>
array
...
protected 'parent' =>
object(Doctrine_Manager)[12]
...
protected '_impl' =>
array
...
protected '_params' =>
array
...
protected '_locator' => null
protected '_resources' =>
array
...
protected '_identityMap' =>
array
1 =>
object(Sousencadre)[108]
...
2 =>
object(Sousencadre)[116]
...
3 =>
object(Sousencadre)[117]
...
4 =>
object(Sousencadre)[118]
...
protected '_repository' =>
object(Doctrine_Table_Repository)[92]
private 'table' =>
&object(Doctrine_Table)[87]
private 'registry' =>
array
...
protected '_columns' =>
array
'id' =>
array
...
'titre' =>
array
...
'contenu' =>
array
...
'encadre_id' =>
array
...
'ordre' =>
array
...
protected '_uniques' =>
array
empty
protected '_fieldNames' =>
array
'id' => string 'id' (length=2)
'titre' => string 'titre' (length=5)
'contenu' => string 'contenu' (length=7)
'encadre_id' => string 'encadre_id' (length=10)
'ordre' => string 'ordre' (length=5)
protected '_columnNames' =>
array
'id' => string 'id' (length=2)
'titre' => string 'titre' (length=5)
'contenu' => string 'contenu' (length=7)
'encadre_id' => string 'encadre_id' (length=10)
'ordre' => string 'ordre' (length=5)
protected 'columnCount' => int 5
protected 'hasDefaultValues' => null
protected '_options' =>
array
'name' => string 'Sousencadre' (length=11)
'tableName' => string 'sousencadre' (length=11)
'sequenceName' => null
'inheritanceMap' =>
array
...
'enumMap' =>
array
...
'type' => string 'INNODB' (length=6)
'charset' => string 'utf8' (length=4)
'collate' => string 'utf8_general_ci' (length=15)
'treeImpl' => null
'treeOptions' =>
array
...
'indexes' =>
array
...
'parents' =>
array
...
'joinedParents' =>
array
...
'queryParts' =>
array
...
'versioning' => null
'subclasses' =>
array
...
'orderBy' => null
'declaringClass' =>
object(ReflectionClass)[91]
...
protected '_tree' => null
protected '_parser' =>
object(Doctrine_Relation_Parser)[88]
protected '_table' =>
&object(Doctrine_Table)[87]
protected '_relations' =>
array
...
protected '_pending' =>
array
...
protected '_templates' =>
array
empty
protected '_filters' =>
array
0 =>
object(Doctrine_Record_Filter_Standard)[90]
...
protected '_generators' =>
array
empty
protected '_generator' => null
protected '_invokedMethods' =>
array
empty
protected 'record' =>
object(Sousencadre)[89]
protected '_node' => null
protected '_id' =>
array
...
protected '_data' =>
array
...
protected '_values' =>
array
...
protected '_state' => int 3
protected '_lastModified' =>
array
...
protected '_modified' =>
array
...
protected '_oldValues' =>
array
...
protected '_errorStack' => null
protected '_references' =>
array
...
protected '_pendingDeletes' =>
array
...
protected '_pendingUnlinks' =>
array
...
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 4
protected '_table' =>
&object(Doctrine_Table)[87]
protected '_locator' => null
protected '_resources' =>
array
...
protected 'attributes' =>
array
empty
protected 'parent' =>
object(Doctrine_Connection_Mysql)[10]
protected 'driverName' => string 'Mysql' (length=5)
protected 'dbh' =>
object(PDO)[74]
...
protected 'tables' =>
array
...
protected '_name' => string 'doctrine' (length=8)
protected 'isConnected' => boolean true
protected 'supported' =>
array
...
protected 'pendingAttributes' =>
array
...
private 'modules' (Doctrine_Connection) =>
array
...
protected 'properties' =>
array
...
protected 'serverInfo' =>
array
...
protected 'options' =>
array
...
protected '_count' => int 3
protected '_usedNames' =>
array
...
protected 'attributes' =>
array
...
protected 'parent' =>
object(Doctrine_Manager)[12]
...
protected '_impl' =>
array
...
protected '_params' =>
array
...
protected '_locator' => null
protected '_resources' =>
array
...
protected '_impl' =>
array
empty
protected '_params' =>
array
empty
protected '_locator' => null
protected '_resources' =>
array
empty
protected '_snapshot' =>
array
0 =>
object(Sousencadre)[108]
protected '_node' => null
protected '_id' =>
array
...
protected '_data' =>
array
...
protected '_values' =>
array
...
protected '_state' => int 1
protected '_lastModified' =>
array
...
protected '_modified' =>
array
...
protected '_oldValues' =>
array
...
protected '_errorStack' => null
protected '_references' =>
array
...
protected '_pendingDeletes' =>
array
...
protected '_pendingUnlinks' =>
array
...
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 8
protected '_table' =>
object(Doctrine_Table)[87]
...
protected '_locator' => null
protected '_resources' =>
array
...
1 =>
object(Sousencadre)[116]
protected '_node' => null
protected '_id' =>
array
...
protected '_data' =>
array
...
protected '_values' =>
array
...
protected '_state' => int 1
protected '_lastModified' =>
array
...
protected '_modified' =>
array
...
protected '_oldValues' =>
array
...
protected '_errorStack' => null
protected '_references' =>
array
...
protected '_pendingDeletes' =>
array
...
protected '_pendingUnlinks' =>
array
...
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 10
protected '_table' =>
object(Doctrine_Table)[87]
...
protected '_locator' => null
protected '_resources' =>
array
...
2 =>
object(Sousencadre)[117]
protected '_node' => null
protected '_id' =>
array
...
protected '_data' =>
array
...
protected '_values' =>
array
...
protected '_state' => int 1
protected '_lastModified' =>
array
...
protected '_modified' =>
array
...
protected '_oldValues' =>
array
...
protected '_errorStack' => null
protected '_references' =>
array
...
protected '_pendingDeletes' =>
array
...
protected '_pendingUnlinks' =>
array
...
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 11
protected '_table' =>
object(Doctrine_Table)[87]
...
protected '_locator' => null
protected '_resources' =>
array
...
3 =>
object(Sousencadre)[118]
protected '_node' => null
protected '_id' =>
array
...
protected '_data' =>
array
...
protected '_values' =>
array
...
protected '_state' => int 1
protected '_lastModified' =>
array
...
protected '_modified' =>
array
...
protected '_oldValues' =>
array
...
protected '_errorStack' => null
protected '_references' =>
array
...
protected '_pendingDeletes' =>
array
...
protected '_pendingUnlinks' =>
array
...
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 12
protected '_table' =>
object(Doctrine_Table)[87]
...
protected '_locator' => null
protected '_resources' =>
array
...
protected 'reference' =>
object(Encadre)[106]
protected '_node' => null
protected '_id' =>
array
'id' => string '3' (length=1)
protected '_data' =>
array
'id' => string '3' (length=1)
'titre' => string 'Qui sommes-nous ?' (length=17)
'contenu' => string '<p>azertyuiop</p>' (length=17)
'entite_id' => string '1' (length=1)
'ordre' => string '3' (length=1)
protected '_values' =>
array
empty
protected '_state' => int 3
protected '_lastModified' =>
array
empty
protected '_modified' =>
array
empty
protected '_oldValues' =>
array
empty
protected '_errorStack' => null
protected '_references' =>
array
'sousencad' =>
&object(Doctrine_Collection)[107]
protected '_pendingDeletes' =>
array
empty
protected '_pendingUnlinks' =>
array
empty
protected '_serializeReferences' => boolean false
protected '_invokedSaveHooks' => boolean false
private '_oid' (Doctrine_Record) => int 7
protected '_table' =>
object(Doctrine_Table)[81]
protected '_data' =>
array
...
protected '_identifier' => string 'id' (length=2)
protected '_identifierType' => int 1
protected '_conn' =>
object(Doctrine_Connection_Mysql)[10]
...
protected '_identityMap' =>
array
...
protected '_repository' =>
object(Doctrine_Table_Repository)[86]
...
protected '_columns' =>
array
...
protected '_uniques' =>
array
...
protected '_fieldNames' =>
array
...
protected '_columnNames' =>
array
...
protected 'columnCount' => int 5
protected 'hasDefaultValues' => null
protected '_options' =>
array
...
protected '_tree' => null
protected '_parser' =>
object(Doctrine_Relation_Parser)[82]
...
protected '_templates' =>
array
...
protected '_filters' =>
array
...
protected '_generators' =>
array
...
protected '_generator' => null
protected '_invokedMethods' =>
array
...
protected 'record' =>
object(Encadre)[83]
...
protected 'attributes' =>
array
...
protected 'parent' =>
object(Doctrine_Connection_Mysql)[10]
...
protected '_impl' =>
array
...
protected '_params' =>
array
...
protected '_locator' => null
protected '_resources' =>
array
...
protected '_locator' => null
protected '_resources' =>
array
empty
protected 'referenceField' => string 'encadre_id' (length=10)
protected 'relation' =>
object(Doctrine_Relation_ForeignKey)[93]
protected 'definition' =>
array
'alias' => string 'sousencad' (length=9)
'foreign' => string 'encadre_id' (length=10)
'local' => string 'id' (length=2)
'class' => string 'Sousencadre' (length=11)
'type' => int 1
'table' =>
object(Doctrine_Table)[87]
...
'localTable' =>
object(Doctrine_Table)[81]
...
'name' => null
'refTable' => null
'onDelete' => null
'onUpdate' => null
'deferred' => null
'deferrable' => null
'constraint' => null
'equal' => boolean false
'cascade' =>
array
...
'owningSide' => boolean false
'refClassRelationAlias' => null
'foreignKeyName' => null
'orderBy' => null
protected '_isRefClass' => null
protected 'keyColumn' => null
protected '_locator' => null
protected '_resources' =>
array
empty
Hors ligne LegendPJ # Posté le 11/04/2012 à 21:50:14
Avatar

Ville : Lyon
Pays : France métropolitaine
Études : IUT Grenoble 2

Bon, désolé d'avoir fait tout ce foin pour rien...un pote à moi a trouvé la solution : faire un count sur la variable et tester si ce count est egal à 0 ou pas, et ça fonctionne ;)

Merci christophed pour ce tuto et pour l'aide qu'il m'a apporté ! :)
Hors ligne christophetd # Posté le 11/04/2012 à 21:52:17
Regardez-moi !
Avatar

Avis : Très bon
Flux RSS

Ville : Gap
Pays : France métropolitaine

Avec plaisir. ;)
 
Hors ligne ArRaXaS # Posté le 25/04/2012 à 09:55:51
Avatar

Avis : Bon

Hello,

Le tutoriel est très intéressant et bien fait !

J'aurais juste une question qui me bloque un peu. Mes tables sont déjà créées et remplies. Et je ne suis pas sûr de pouvoir exécuter les instructions de ce tutoriel sans altérer mes données.

Ma question est comment fait-on pour partir d'une table qui existe déjà ?

Soit ma table "user". Suffit-il de créer la classe user.class.php ou dois-je aussi implémenter la méthode setTableDefinition() ?

Merci pour ces éclaircissements !

Bon travail,
Hors ligne christophetd # Posté le 25/04/2012 à 10:16:31
Regardez-moi !
Avatar

Avis : Très bon
Flux RSS

Ville : Gap
Pays : France métropolitaine

Salut,
Ça commence à faire vraiment très longtemps que je n'ai plus touché à Doctrine, donc je te conseille de demander sur le forum... ;)
 
Hors ligne ArRaXaS # Posté le 25/04/2012 à 11:24:33
Avatar

Avis : Bon

Oui c'est déjà fait ^^
Merci pour ta réponse rapide !
Pour accéder à cette section
Connectez-vous !
connexion_rpx