Bonjour,
qu'est ce qui vaut 0 ?
Bonsoir,
lors de la formation cakephp, et du chapitre d'abonnement on a la possibilité de suivre un animal.
Lors de cette souscription on entre dans une table de liaison l'id de l'aniaml pet_id et l'id de l'utilisateur le suivant user_id . Mais probleme je recupère la valeur 0 =(
Voici mon code
et le liens de souscription :
une idée ?
30 réponses
la valeur des champs user_id et pet_id dans ma table
Que renvoit ceci ?
un tableau avec les valeurs correctes de mes deux champs
Sans le Subscription ça donne quoi ?
Cette erreur là :
Database Error
Error: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'user_id' in where clause is ambiguous
SQL Query: SELECT COUNT(*) AS count FROM petsy.subscriptions AS Subscription LEFT JOIN petsy.pets AS Pet ON (Subscription.pet_id = Pet.id) LEFT JOIN petsy.users AS User ON (Subscription.user_id = User.id) WHERE pet_id = 3 AND user_id = 2
arf... je voulais test juste le save ça a impacté le select ^^
Le problème ici c'est le format de ta variable lors de l'enregistrement, elle ne correspond pas au format préconisé par CakePHP dans leur documentation, voici donc comment résoudre le problème:
Ca ne change rien malheureusement =/
Que vois-tu dans la log SQL (le débug sql de cakephp )
a quel moment ?
Quand tu fais ton save
Nr Query Error Affected Num. rows Took (ms)
1 SELECT COUNT() AS count FROM petsy.pets AS Pet WHERE Pet.id = 1 1 1 0
2 SELECT COUNT() AS count FROM petsy.subscriptions AS Subscription LEFT JOIN petsy.pets AS Pet ON (Subscription.pet_id = Pet.id) LEFT JOIN petsy.users AS User ON (Subscription.user_id = User.id) WHERE Subscription.pet_id = 1 AND Subscription.user_id = 2 1 1 0
3 INSERT INTO petsy.subscriptions (created) VALUES ('2014-12-09 19:50:57')
Il ne prend pas en compte mon $conditions =/
et avec un array('Subscription' => $conditions) ?
c'est pareil
$this->Subscription->create(); juste avant le save? pas mieux?
deja essayé ca ne fonctionne pas non plus
Bomber, est-ce que tu peux faire un dump de ta base de donnée est la mettre à disposition ? Je vais tester en local pour essayer d'identifier le problème (met la sur un hébergeur (Mega par exemple) ou envois via skype InspiratNetwork ou via e-mail contact@inspirat.fr).
Voila c'est envoyé sur ton adresse mail.
Merci bien
A quoi ressemble le modèle Subscription ?
Donc, j'ai essayer, ton problème de 0 viens de ta variable "$conditions", tu précise le modèle pour les deux champs "Subscription.user_id" et "Subscription.pet_id", c'est ce qui cause le problème.
Voilà à quoi ressemble ma fonction et ça fonctionne pour ma part:
Peux tu m'expliquer la ligne :
je ne comprend pas pourquoi on le fait pour pet_id
Stp.
Sinon, au final, je me retrouve encore avec l'erreur que j'avais tout tout au debut :
(default) 1 query took 0 ms
Nr Query Error Affected Num. rows Took (ms)
1 SELECT COUNT(*) AS count FROM petsy.pets AS Pet WHERE Pet.id = 1 1 1 0
Database Error
Error: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'user_id' in where clause is ambiguous
SQL Query: SELECT COUNT(*) AS count FROM petsy.subscriptions AS Subscription LEFT JOIN petsy.pets AS Pet ON (Subscription.pet_id = Pet.id) LEFT JOIN petsy.users AS User ON (Subscription.user_id = User.id) WHERE pet_id = 1 AND user_id = 2
Test en réécrivant les données à sauvegarder (en utilisant pas la même variable $conditions) ..
toujours pareil -_-'
lorsque je remets les lignes (rajoute le 'Subscription. '):
l'erreur d'ambiguïté disparait mais je me retrouve avec les 0 dans ma table... =/
Je regarde demain pour le soucis d'ambiguïté ;) mais ce sera avec le code que je t'ai donné
Utilise 2 variables ..
Une avec Subscription pour le find, l'autre sans pour le save.
J'ai fait ca une première fois ca ne fonctionnait pas, je le refais une seconde fois ca fonctionne:
le code complet :