bonjour,

voila mon petit souci quand je met cci dans mon controller :

function index(){       
        $events = $this->Evenement->find('all');
        $this->set(compact('events'));
        debug($events);
    }

ca fonctionne et quand je rajouter ceci dans le find ca ne fonctionne plus ;(

function index(){       
        $events = $this->Evenement->find('all',array(
            'conditions' => 'Evenement.region_id = Evenement.region'
            ));
        $this->set(compact('events'));
        debug($events);
    }

peut etre que jai fait une betise voire une grosse betise :(

en gros ce que j essaie de faire ce que mes evenements soir classer par MOIS et par REGION

merci d avance pour votre sympatique aide ;)

6 réponses


Bahamut45
Réponse acceptée

Bonjour,

J'ai peut être pas bien cerné le probleme et malheuresement je ne connais pas assez cakephp, mais à la lecture de tes tables, pour moi tu compare un champ int et un champ varchar sur la table evenements ????

`evenements` (
  `id` int(30) NOT NULL AUTO_INCREMENT,
  `content` longtext CHARACTER SET utf8 NOT NULL,
  `region` varchar(60) COLLATE utf8_bin NOT NULL, / **Ce champ** /
  `month` varchar(255) COLLATE utf8_bin NOT NULL,
  `region_id` int(11) NOT NULL, / **Ce champ** /
  `month_id` int(11) NOT NULL,
  `dates_limites` longtext CHARACTER SET utf8 NOT NULL,
  `web` longtext COLLATE utf8_bin NOT NULL,
  `month_count` int(11) NOT NULL DEFAULT '0',
  `region_count` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=5 ;

Peut tu me faire un echo de la requete sql une fois préparé ?

Cordialement

Bonjour quels sont les champs de ta table relié au modèle Evenement?

Par ailleurs conditions prend un tableau en valeur , 'conditions' =>array('truc' =>'machin','bidule' => 'chouette' )

Pour classer des données, un ORDER BY en sql est sans doute le mieux, après selon les structures, jointures etc.. c'est pour ça qu'il faudrait plus d infos sur les tables, modèles et liaisons éventuelles

Bonjour,

Je ne comprend pas ta condition sql.

Si je ne me trompe pas et si je refait ta requete normalement sa devrai ressembler a

SELECT * FROM Evenement WHERE Evenement.region_id = Evenement.region

Est-tu sûr de ta requete?

giizmo
Auteur

bonjour,

alors apparement je n'arrive pas a me faire comprendre voici exactementce que je souhaite faire :

j'ai une table evenement avec ces champs

`evenements` (
  `id` int(30) NOT NULL AUTO_INCREMENT,
  `content` longtext CHARACTER SET utf8 NOT NULL,
  `region` varchar(60) COLLATE utf8_bin NOT NULL,
  `month` varchar(255) COLLATE utf8_bin NOT NULL,
  `region_id` int(11) NOT NULL,
  `month_id` int(11) NOT NULL,
  `dates_limites` longtext CHARACTER SET utf8 NOT NULL,
  `web` longtext COLLATE utf8_bin NOT NULL,
  `month_count` int(11) NOT NULL DEFAULT '0',
  `region_count` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=5 ;

ensuite j'ai une table month avec ces champs:

`months` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `months` varchar(60) NOT NULL,
  `month_id` varchar(60) NOT NULL,
  `evenement_count` int(11) NOT NULL DEFAULT '0',
  `region_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `months_id` (`month_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;

et une table region avec ces champs:

`regions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `region` varchar(100) NOT NULL,
  `region_id` varchar(255) NOT NULL,
  `evenement_count` int(11) NOT NULL DEFAULT '0',
  `month_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `regions` (`region`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=25 ;

ce que je souhaite ces que chaque evenement soit classer par MOIS puis par REGION
donc j ai fait les relations qu il fallait avec le counterCache cela fonctionne mais quand je l envoie a la vue il me melange tout
Voici le lien pour voir ce que cela donne CLIQUER ICI

Bonjour,

Ton lien renvoit une erreur 404.

Qu'entends-tu par "ca ne fonctionne plus" ?

Je suis d accord avec Antho, selon tes explications, tu devrais partir sur quelques choses qui ressemble a ca :

$this->Evenement->find('all', array('order' => 'evenement.month_id, evenement.region_id DESC'))
giizmo
Auteur

bonjour

le lien re fonctionne