Yii Framework Forum: Un simple relation qui ne veut pas.... - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Un simple relation qui ne veut pas.... entre catégorie et produit Rate Topic: -----

#1 User is offline   Clem 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 15-November 10

  Posted 05 May 2012 - 01:13 PM

Bonsoir,

là je bloque pour me faire une petite relation. Je m'explique:

J'ai une table categorie et une table produit.
Une catégorie peut être associée a un produit via la clé étrangère id_categorie présente dans la table produit.

Jusque là rien de plus classique.

Dans le modèle Produit j'ai donc la relation
'categorie' => array(self::BELONGS_TO, 'Categorie', 'id_categorie'),


Maintenant, j'aimerai avoir tous les produits présents dans cette catégorie!
J'ai bien essayé une relation avec through du genre
'produitsFreres' => array(self::HAS_MANY, 'Produit', array('id' => 'id_categorie'), 'through' => 'categorie'),


Mais j'ai une erreur SQL, la requête étant:
SELECT `produitsFreres`.`id` AS ,... FROM `produit` `produitsFreres` 
LEFT OUTER JOIN `categorie` `categorie` ON (`categorie`.`id`=`produitsFreres`.`id_categorie`) 
WHERE (`categorie`.`id_categorie`=:ypl0) 


Et l'erreur:
Column not found: 1054 Unknown column 'categorie.id_categorie' in 'where clause'


Comment faire pour récupérer tous les produits présents dans la même catégorie via une simple relation?

Merci pour votre aide!

Bonne soirée,
Clem
0

#2 User is offline   bennouna 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,166
  • Joined: 05-January 12
  • Location:Morocco

Posted 05 May 2012 - 02:48 PM

Bonsoir

Avez-vous essayé comme suit :
  • Votre relation 'categorie'
  • Une relation 'produits' (HAS_MANY) classique dans le modèle Categorie
  • Pour récupérer les produits frères du produit dont l'id = $id par exemple :
    Produit::model()->findByPk($id)->categorie->produits

?
0

#3 User is offline   Clem 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 15-November 10

Posted 06 May 2012 - 01:42 AM

Effectivement, c'est ce que j'ai fini par faire, et ça fonctionne très bien... mais j'aurai aimé être capable de le faire avec une relation dans le modèle Produit!
0

#4 User is offline   saegeek 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 09-December 09
  • Location:Montpellier - France

Posted 12 May 2012 - 01:36 PM

Mais depuis quand il faut une relation pour une simple requete du genre :
SELECT * FROM `produit` WHERE `category_id`=1

ce qui revient au même que :
$id=1;
Produit::model()->findByPk($id);

And [for] their saying, "Indeed, we have killed the Messiah, Jesus, the son of Mary, the messenger of God ." And they did not kill him, nor did they crucify him; but [another] was made to resemble him to them. And indeed, those who differ over it are in doubt about it. They have no knowledge of it except the following of assumption. And they did not kill him, for certain.Rather, God raised him to Himself.
0

#5 User is offline   Clem 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 30
  • Joined: 15-November 10

Posted 14 May 2012 - 03:24 AM

Pour comprendre comment faire une relation plus complexe, sans utiliser de fonction, une façon plus poussée d'utiliser le framework.

D'ailleurs dans ton exemple ci-dessus

SELECT * FROM `produit` WHERE `category_id`=1


Ne revient pas du tout au même que

$id=1;
Produit::model()->findByPk($id);

Mais plutôt
$id=1;
  $criteria=new CDbCriteria;
  $criteria->addCondition('t.id_categorie=:idCategorie');
  $criteria->params[':idCategorie']= $id;
  Produit::model()->findAll($criteria);

0

#6 User is offline   saegeek 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 09-December 09
  • Location:Montpellier - France

Posted 16 May 2012 - 03:30 PM

ouais je sais mais j'avais pas envie d'aller chercher le code dans les entrailles de mon site :lol:
And [for] their saying, "Indeed, we have killed the Messiah, Jesus, the son of Mary, the messenger of God ." And they did not kill him, nor did they crucify him; but [another] was made to resemble him to them. And indeed, those who differ over it are in doubt about it. They have no knowledge of it except the following of assumption. And they did not kill him, for certain.Rather, God raised him to Himself.
0

#7 User is offline   Raoul 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 637
  • Joined: 29-November 08
  • Location:Paris, France

Posted 18 May 2012 - 12:28 PM

Quote

...Mais plutôt
$id=1;
  $criteria=new CDbCriteria;
  $criteria->addCondition('t.id_categorie=:idCategorie');
  $criteria->params[':idCategorie']= $id;
  Produit::model()->findAll($criteria);



...ou bien aussi :

Produit::model()->findAllByAttributes(array( 'id_categorie' => $id));

B)
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users