2010-03-21 5 views
0

Il existe 2 modèles: Projet & Catégorie liée à la relation HABTM. Je voudrais effectuer une recherche de contrôleur de projets qui peuvent effectuer les opérations suivantes:Cakephp, Récupérer des données pour les modèles HABTM à l'aide de la recherche conditionnelle

FIND all DISTINCT Project.scedule WHERE Category.slug != 'uncategorised' 

Toutes mes excuses pour la syntaxe, je ne suis pas expert en suite.

Ce que j'ai réussi à faire est de récupérer tous les projets qui ne font pas partie à la catégorie non catégorisé dans un tableau mais je ne suis pas sûr quant à la façon de rechercher à nouveau le résultat de tableau pour Project.schedule DISTINCT valeurs (nécessaire pour remplir un formulaire déroulant)

Répondre

0

Avant de répondre à cette question, encore une fois je vous suggère de lire le HABTM in cookbook of CAKEPHP attentivement, alors vous pouvez finir des travaux comme celui-ci.

$this->Project->bindModel(array(
'hasOne' => array(
    'CategorysProject', 
    'FilterCategory' => array(
     'className' => 'Category', 
     'foreignKey' => false, 
     'conditions' => array('FilterCategory.id = CategorysProject.category_id') 
)))); 
$this->Project->find('all', array(
    'fields' => array(DISTINCT (Project.scedule)), 
    'conditions'=>array('FilterCategory.slug !='=>'uncategorised') 
)); 
+0

Merci beaucoup pour votre réponse. Cela fonctionne super J'essaie de comprendre cette méthode ... pour que je puisse l'utiliser moi-même. Il semble cependant y avoir quelque chose d'étrange. Après le bindModel je peux seulement effectuer une requête. Lorsque j'essaie d'effectuer une seconde requête (similaire à celle de votre exemple), elle ne le fait pas. Je dois re-bindModel à nouveau. Cela vous semble-t-il correct? Cela signifie-t-il que la méthode bindModel est valide uniquement pour une seule requête. – ion

+0

Ouais, c'est ce que ça devrait être. Cependant, si vous avez plus d'une requête à faire alors il y a d'autres façons simples de le faire.Vérifiez le manuel, essayez de trouver vous-même réponse :) – Young

+0

Merci pour le coup d'envoi :) – ion

Questions connexes