Bonjour,
Voila je rencontre un petit problème avec mon code pour afficher le AS du Group_Concat, une idée ?
$d['partners'] = $this->Etablissement->find('all', array(
'fields' => 'Etablissement.*,Agregat.*,Ville.*,EtablissementKeyword.*, GROUP_CONCAT(`Keyword`.lib SEPARATOR ", ") AS motscles, Keyword.*',
'joins' => $joins,
'conditions'=>'Etablissement.partner = 1 AND Departement2.code = "'.$dep_id.'" AND (Etablissement.fin >= NOW() OR Etablissement.fin IS NULL) AND Etablissement.agregat_id='.$id.' GROUP BY Etablissement.id',
'contain' => array('Ville','Agregat','EtablissementKeyword'),
'order' => 'RAND()',
'limit' => 10
));
Quand j'affiche echo $v['Keyword']['lib']; : aucun souci un mot clé s'affiche mais pour afficher le "AS" je tente ça : $v['Keyword']['motscles']; et là c'est le bug, que dois je faire pour afficher ce nouveau champ imaginaire ?
Merci d'avance.
regarde du coté des virtual fields
$this->Etablissement->virtualFields = array(
'motscles' => 'GROUP_CONCAT(`Keyword`.lib SEPARATOR ", ")'
);
merci de ton retour keulu, jamais utilisé les virtual fields, il faut que je le place où ?
avant ton find
ou dans ton model
public $virtualFields = array(
'nom' => 'CONCAT(User.prenom, " ", User.nom_famille)'
);
fait, j'ai modifié en $this->Etablissement->virtualFields['motscles']= 'GROUP_CONCAT(Keyword
.lib SEPARATOR ", ")'; car il y avait des erreurs
mais comment je peux faire l'appel du coup sur mon fichier ?
oui ça je l'avais déjà avant l'entrée motscles mais lorsque je souhaite l'afficher sur mon fichier d'affichage cela ne fonctionne pas, pour les éléments de la même requête je fais echo $v['Keyword']['lib'] et ça fonctionne
pour motscles je fais echo $v['Keyword']['motscles'] et j'ai undefined index motscles
ben regarde la tete de ton tableau renvoyé en utilisant debug()
moi je ferai peut etre plus un $v['motscles']
'EtablissementKeyword' => array(
'id' => '1596',
'etablissement_id' => '24594',
'keyword_id' => '1',
(int) 0 => array(
'id' => '1596',
'etablissement_id' => '24594',
'keyword_id' => '1'
),
(int) 1 => array(
'id' => '1597',
'etablissement_id' => '24594',
'keyword_id' => '29'
)
),
(int) 0 => array(
'motscles' => 'Unité Alzheimer, Hébergement Temporaire'
),
en fait, je pense que tu devrai mettre ton virtual field au niveau de ton model Keyword. pour qu'a chaque fois que tu récupère qqch depuis keyword, ca te mette cette entrée en plus. tu aura accès a Keyword.motscles. Parce que la, tu l'as mis au niveau de l'établissement (pas top)
et dans ton contain, t'as pas selectionné Keyword...
'contain' => array('Ville','Agregat','EtablissementKeyword'),
je t'ai donné les pistes a suivre, a toi de débugger tout seul, je connais pas la structure de tes modèles. mais le virtual field est fait pour ce que tu veux faire. a toi de lire la doc de cakephp, debugger tes objets, et comprendre pourquoi t'as un undefined offset. :)
Bon courage
je viens de trouver juste avant le week-end c'est parfait, la solution était echo $v[0]['motscles']; car motscles est associé à aucune table . Merci de ton aide !