Bonjour,

j'essaye de suivre le tuto sur la mise en place du plugin media, et je rencontre un problème lorsque que je rajoute la clé : media_id dans la table POST. ceci me rapporte l'erreur suivante :

DATABASE ERROR
Error: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous
SQL Query: SELECT `Post`.`id`, `Post`.`name`, `Post`.`content`, `Post`.`created`, `Post`.`category_id`, `Post`.`media_id`, `Post`.`thumb_id`, `Thumb`.`id`, `Thumb`.`ref`, `Thumb`.`ref_id`, `Thumb`.`file`, `Thumb`.`position` FROM `bdd_fight_defense_academy`.`posts` AS `Post` LEFT JOIN `bdd_fight_defense_academy`.`medias` AS `Thumb` ON (`Post`.`media_id` = `Thumb`.`id`) WHERE `id` = 2 LIMIT 1
Notice: If you want to customize this error message, create app\View\Errors\pdo_error.ctp

Pour en revenir à la situation, juste avant de rajouter la clé permettant d'activer l'option des image à la une, le plugin semble fonctionner, car je peux, via l'iframe, rajouter des images et modifier l'ordre.

Pour corriger le problème, j'ai essayé de rajouter une table thumb dans ma base car il semblerai que la requête tente d'y accéder, mais cela ne change rien et je reste bloqué. Etant en panne sèche, je viens solliciter vos conseils et votre aide!

Merci d'avance

6 réponses


GrafikFan
Réponse acceptée

Salut,

Il te suffit de préciser le Model qui précède l'id dans ta requête find().
Exemple:

$artiste = $this->Artiste->find('first', array(
'conditions' => array(' Artiste.id <u></u>' => $id),
'fields' => array(
'Artiste.id',
'Artiste.name',
'Artiste.slug',
'Artiste.content',
'Artiste.youtube',
'Artiste.soundcloud',
'Artiste.banniere',
'Artiste.ficheTech',
'Artiste.affiche',
'Artiste.facebook',

'Thumb.file'),
'contain' => array('Thumb', 'Media')
));

Bien à toi,

GrafikFan

Bonjour, il n'y a pas besoin de table Thumb si ma mémoire est bonne:

A quel moment a lieu cet erreur? Lors d'une requête à toi ?

cordialement

Bonsoir.
Tu pourrais nous montrer l'action du controller posts ?
C'est exact, il n'y a pas de table Thumb, Thumb est juste une clé fictive.

Pour l'explication :

Etant donné que tu utilise certainement deux tables liées (medias et posts), toutes deux contenant un champ 'id', la requête ne peut pas deviner et prendre une décision si c'est l'id de la table 'medias' ou l'id de la table 'posts' qui doit être égale à l'id reçue en paramètre dans ta fonction [admin_edit($id){ #code... }].

Voilà, j'espère que cela peut t'aider. :)

GrafikFan

Rastaf86
Auteur

Je vais tester ça et je vous tiens informer rapidement. Merci à vous deux pour votre réactivité.

Rastaf86
Auteur

C'est testé! et ça marche, le problème venait effectivement du controller, j'y effectais la mauvaise requête find, et sur ma condition.

$post = $this->Post->find('first',array(
                'conditions'    =>array('id' => $id)
                ));

Et le problème s'est corrigé en tappant:

$post = $this->Post->find('first',array(
                'conditions'    =>array('category_id' => $id)
                ));

Maintenant, je vais pouvoir poursuivre.

Merci pour votre aide