Bonjour,

J'ai un léger soucis lors de la récupération des données. En
effectuant une requête avec des jointures, j'ai remarqué que, lorsque
la référence n'existe pas dans la base, au lieu de la laisser à null,
Doctrine crée une nouvelle instance de l'objet en référence.

Par exemple :

$query = Doctrine_Query::create()
            ->from("Competence c")
            ->leftJoin("c.RaceCompetence r WITH r.id_race = ?",
$personnage->get('id_race'))
            ->leftJoin("c.ClasseCompetence c2 WITH
c2.id_classe_personnage = ?", $classe)
            ->leftJoin("c.ParamsStats p")
            ->leftJoin("c.PersonnageCompetence p2 WITH
p2.id_personnage = ?", $personnage->get('id_personnage'));

        $competences = $query->execute();

Avec le schema.yml suivant :
Competence:
  tableName: competence
  columns:
    id_competence:
      type: integer(4)
      primary: true
    nom:
      type: string(100)
      notnull: true
    malus_armure:
      type: integer(1)
      default: '0'
    description: string(2147483647)
    id_params_stats: integer(4)
  relations:
    ParamsStats:
      local: id_params_stats
      foreign: id_params_stats
      type: one
    ClasseCompetence:
      local: id_competence
      foreign: id_competence
      type: many
    DonCompetence:
      local: id_competence
      foreign: id_competence
      type: many
    PersonnageCompetence:
      local: id_competence
      foreign: id_competence
      type: many
    RaceCompetence:
      local: id_competence
      foreign: id_competence
      type: many
    Synergie:
      local: id_competence
      foreign: id_competence
      type: many
    Synergie_2:
      class: Synergie
      local: id_competence
      foreign: id_competence_bonus
      type: many

Lorsqu'aucun PersonnageCompetence n'existe pour la Competence,
$competences[0]->PersonnageCompetence
me retourne donc un Doctrine_Collection, avec une valeur au premier
poste, qui est un PersonnageCompetence.
Or, j'ai besoin de tester s'il existe bel et bien un
PersonnageCompetence pour la compétence.
J'ai bel et bien trouvé le moyen avec une bidouille temporaire :
$competences[0]->PersonnageCompetence->getFirst()->isNew(), mais
j'aimerais savoir s'il n'y a pas une manière plus propre d'opérer.

Merci d'avance!

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "Symfony-fr" 
de Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/symfony-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à