Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/12/2010, 17h24   #1
Membre régulier
 
Inscription : janvier 2008
Messages : 212
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 212
Points : 75
Points : 75
Envoyer un message via Skype™ à mantex
Par défaut Object of class Invitation could not be converted to int in

Bonjour,


je récupère un champs depuis dans ma table invitation (int) avec la fonction isRecalled et je test la valeur pour afficher le gif qui correspond au cas.

Code :
1
2
 
$invit->isRecalled($contributor->getId()) != 0 )
seuleement le récupérer toujours 0 (valeur par défaut) et j' ai l' erreur suivante

Code :
1
2
 
 Object of class Invitation could not be converted to int in
Voici le code la fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 public function isRecalled($id)
  {
 
      $q = $this->createQuery('i')
      ->select('i.is_recalled')
      ->where('i.contributor_id = ?', $id );
 
    return $q->fetchOne();
    #return $q->setHydrationMode(Doctrine::HYDRATE_ARRAY)->execute();
 
 
 
  }
mantex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 18h07   #2
Membre éprouvé
 
Avatar de Tesing
 
Xavier Schepler
Étudiant
Inscription : septembre 2009
Messages : 273
Détails du profil
Informations personnelles :
Nom : Xavier Schepler
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2009
Messages : 273
Points : 402
Points : 402
La methode fetchOne renvoit un int ?
__________________
Keep it simple, stupid !
Tesing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 18h11   #3
Membre régulier
 
Inscription : janvier 2008
Messages : 212
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 212
Points : 75
Points : 75
Envoyer un message via Skype™ à mantex
oui c' est parce qu 'il y le if juste avant

Code :
1
2
 
<?php if ( $invit->isRecalled($contributor->getId()) == 0  ): ?>
mantex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 18h33   #4
Membre éprouvé
 
Avatar de Tesing
 
Xavier Schepler
Étudiant
Inscription : septembre 2009
Messages : 273
Détails du profil
Informations personnelles :
Nom : Xavier Schepler
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2009
Messages : 273
Points : 402
Points : 402
J'ai édité mon précédent message en pensant que tu ne le lirais pas.
Peux tu t'assurer que la méthode fetchOne appelée dans isRecalled et qui donne la valeur de retour de cette dernière est bien du type int. A vue de nez je dirais qu'elle renvoie un objet de la classe Invitation. D'où l'erreur.
__________________
Keep it simple, stupid !
Tesing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 18h34   #5
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Je ne pense pas que fechtone retourne un integer, de mes souvenirs, il retourne un enregistrement (même si plusieurs auraient pût correspondre).

Il convient donc de récupérer le champs.

Ta fonction pourrait alors ressembler à ceci :

Code :
1
2
3
4
5
6
 
public function isRecalled($id)
{
   $r = $this->findOneById( $id );
   return $r->getIsRecalled;
}
Attention, utilisé dans une liste, cette fonction risque de générer de nombreuses requêtes.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/12/2010, 18h41   #6
Membre régulier
 
Inscription : janvier 2008
Messages : 212
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 212
Points : 75
Points : 75
Envoyer un message via Skype™ à mantex
Ben en fait c 'est bizarre dans le débugger malgré mon select précis sur le champs dans ma fonction je récupère l' id de l' enregistrement également.

Code :
1
2
 
SELECT i.id AS i__id, i.is_recalled AS i__is_recalled FROM invitation i WHERE (i.contributor_id = '4')
mantex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 18h57   #7
Membre régulier
 
Inscription : janvier 2008
Messages : 212
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 212
Points : 75
Points : 75
Envoyer un message via Skype™ à mantex
avec une petite correction cela passe nikel.

Code :
1
2
3
4
 
 
  $r = $this->findOneByContributorId($id);
      return $r->getIsRecalled();

Et j' ai 10 requêtes pour 3 enregistrements dans ma liste comme avant.

Merci michel..
mantex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 23h42   #8
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Faut voir, avec ta liste, si tu ne peux pas tous récupérer en une fois. Et essayer de descendre à 3 ou mieux 2 requêtes...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 14h11   #9
Membre régulier
 
Inscription : janvier 2008
Messages : 212
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 212
Points : 75
Points : 75
Envoyer un message via Skype™ à mantex
ma liste récupère une collection de résultats avec certains champs de cette collection qui sont récupérés ou calculés à partir d' autre tables.

Par exemple : Dans la liste des contributeurs :

J' ai une colonne "répondu" et "relancé" qui est récupéré dans des tables différentes.

Cette liste ne dépassera 10 lignes donc le cout en performance est acceptable.
mantex est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h13.


 
 
 
 
Partenaires

Hébergement Web