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