Table : appels
id date machine_name valeur
_________________________________________________________
1 2009-02-11 13:02:23 C 13
2 2009-02-11 14:42:23 B 24
etc
> j utilise l association avec machine_name étant que foreign key, mais
> ce que je veux maintenant c est lister les machines qui n' ont pas appelé
Ca fonctionne si machine_name est primary dans "machines".
Si j'ai bien compris, ton problème est que la liaison est "Machine
hasMany Appel" . Or ceci génère 2 requêtes et donc ne permet pas de
filtrer. CounterCache ne t'aidera pas puisque tu veux pouvoir spécifier
des dates pour les appels.
La seule solution que je vois est une requête perso du genre :
$this->Machine->query("Select * from machines where name not in (select
machine_name from appels where date < .... and date > .... )");
Tu peux aussi le faire en 2 fois sans ecrire de requête SQL, genre :
$appels=Set::combine($this->Appel->find('all',array('conditions'=>array('Appel.date'=>
.... ))),
'{n}.Appel.id',
array('%s','{n}.Appel.machine_name'))
$machines =
$this->Machine->find('all',array('conditions'=>array('NOT'=>array('Machine.name'=>$appels))));
Mehdi