Pourquoi ???

Par giizmo, il y a 12 ans


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

antho07, il y a 12 ans

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

Gyuki, il y a 12 ans

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, il y a 12 ans

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

Hess, il y a 12 ans

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, il y a 12 ans

bonjour

le lien re fonctionne

Bahamut45, il y a 12 ans

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