Aller au menu - Aller au contenu
Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !

Symfony-Doctrine récupération avec FindOneBy

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Résolu Le problème de ce sujet a été résolu

Offre d'emploi : Développeur Web PHP/Drupal (H/F)

Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne MademoiselleZéro # Posté le 21/12/2011 à 15:55:06

Bonjour à tous,

Je viens de regarder ce très bon tuto Apprendre à utiliser Doctrine - site du Zéro, qui m'a bien aidé pour les requêtes avec Doctrine, j'en profite pour remercier ses auteurs! Mais je reste bloqué sur un point...

Voila, j'ai une table voyage avec le nombre de kilomètres parcourus par mes utilisateurs chaque mois de l'année j'ai donc comme colonne: id, km_january, km_february,... km_december. Et je voudrais en fonction du mois en cours récupérer la bonne colonne, pour avoir la valeur donnée.

Est-il possible de faire un Code : PHP
1
Doctrine_Core::getTable('voyage')->findOneByKm.’$month’('$id');

ou quelque chose dans le genre (je ne suis pas sûr de la syntaxe...)

Merci beaucoup en tout cas pour votre aide!
Publicité # Posté le 21/12/2011 à 15:55:06

Hors ligne siwane # Posté le 23/12/2011 à 10:38:19

Salut ,
Je suppose que dans ton twig tu as une boucle {%for%} ?

{% for m in mois %}
{%if m.libelle == moisRecherché %}
{{m.km}}
{%endif%}
{% endfor%}
<!-- Ne s'affiche que les données qui correspondent entre 'mois' et 'MoisRecherche'.-->

Ou si tu tu cherche à le faire dans ton Controller :
$em->getRepository('MyAppForestBundle:voyage')->findOneByMonth('.$month.');

Mais n'oublie que la notion de table est à proscrire avec symfony!
Ta table est un objet dont les champs sont ses attribtus.

;) Bon courage



"Ils ne savaient pas que c'était impossible, alors ils l'ont fait". Mark Twain
Siwane....
 
Hors ligne krysh nar # Posté le 23/12/2011 à 14:34:09
aide ton prochain et ton proch

Salut, je pense que tu devrai remanier ton entité comme ceci :

Voyage (avec un exemple de contenue)

Code : Autre
1
2
3
4
5
6
7
id  |        id_user  |        mois     |        km
..  |        1        |        1        |        123
..  |        1        |        2        |        34
..  |        1        |        3        |        567
..  |        1        |        4        |        3224
..  |        1        |        5        |        6556
....


et dans ton code tu n'as plus qu'a faire un find :
findOneByUserAndMonth($id_user, $month)

Édité le 23/12/2011 à 14:34:34 par krysh nar

Développeur PHP 5 POO, MySQL et Actionscript 3
Joueur aussi : Ogame
PHP-MySQL llllllllllllllllllll
HTML-CSS llllllllllllllllllll
Javascript-Ajax llllllllllllllllllll
Actionscript 3-Flash llllllllllllllllllll
 
Hors ligne Cybermanu # Posté le 23/12/2011 à 18:46:27
Avatar

Ville : Hostun
Pays : France métropolitaine

Salut,
Oui tu peux, en PHP le nom des méthodes peut être dynamique (contenu dans une variable) :
Code : PHP
1
2
3
4
5
6
7
<?php
$method = 'findOneByKm'.$month;
Doctrine_Core::getTable('voyage')->$method($id); 
// (Attention : sans guillements autour de '$id')

// Ou encore :
Doctrine_Core::getTable('voyage')->{'findOneByKm'.$month}($id);


Mais dans ton cas, il serait plus efficace de faire ça comme ça (sans méthode 'magique') :
Code : PHP
1
2
<?php
Doctrine_Core::getTable('voyage')->findOneBy('km_'.$month, $id);


Après... ça ne répond pas à ton problème ^^ Je pense que tu t'y prend mal.
Si tu récupère un objet 'voyage', il aura automatiquement toutes les données (km_january, km_february, etc...).

Donc pour avoir les km d'un mois précis, il suffit de faire :
Code : PHP
1
2
3
4
<?php
$voyage = Doctrine_Core::getTable('voyage')->find($id);

$kmDuMois = $voyage->get('km_'.$month);


Mais peut être que j'ai mal compris ton problème...

@siwane : On parle ici de Doctrine 1.2, pas de Doctrine 2 :)

Programmeur : c'est celui qui résout pour toi, de façon incompréhensible, un problème que tu ne savais pas que tu avait... :p
Image utilisateur

Apprenez à utiliser un ORM pour PHP : Doctrine !
 
Hors ligne MademoiselleZéro # Posté le 23/12/2011 à 19:25:09

Merci beaucoup à tous, vous avez tout à fait répondu à ma question!

Bonnes fêtes.

Retour au forum "PHP" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx