J'ai deux tables:Pagination avec l'association hasMany CakePHP
Concurrent et Votes Votes Contestant hasMany
J'ai essayé de faire un compte (Vote.id) comme un vote pour que je puisse le placer sur la recordset et juste les paginer mais je n'ai aucune idée où le placer. Je l'ai fait sur le tableau des champs, mais il m'a donné le nombre total des voix quel que soit le candidat auquel ils appartiennent.
Les votes sont reliés entre eux dans le recordset Contestant donc ce que je fait était mon point de vue, je l'ai fait un compte (candidat à $ [Vote]), mais cela ne peut pas être paginé et mon client veut pouvoir trier les participants par votes.
Est-il possible que je peux faire quelque chose comme ça sur moi ?:
tri ('votes', 'count (Vote)'); ?>
Ou dois-je créer une requête qui compte tous les votes où Contestant.id = Votes.contestant_id?
Controller Contestant:
function index() {
$page = 'Contestants';
$this->set('page', $page);
$this->paginate =
array(
'order' => 'id ASC',
'contain' => array(
'Vote' => array(
'fields' => array("Vote.contestant_id",'Vote.id')
)
)
$conditions ["Contestant.active"] = 1;
$this->set('contestants', $this->paginate('Contestant',
conditions $)); }
bizarre quand j'essaie votre suggestion est la requête ce qu'il construit. :: Requête: SELECT SUM ('Vote'.'id') AS Contestant__votes,' Vote'.'group', 'Vote'.''contestant_id' FROM' votes' AS 'Vote' OERE' Vote'.'contestant_id 'IN (1, 2) –
Et il montre cette erreur: Le modèle" Vote "n'est pas associé au modèle" Vote ". Est-ce un bug? Pourquoi un besoin d'associer un modèle à soi-même? –
Ok, il semble que CakePHP ne supporte pas le groupe par le comportement maîtrisable donc je l'ai fait quelque chose comme ceci: 'conditions de => "1 = 1 GROUP BY Vote.contestant_id" et génère cette requête SQL: SELECT Somme ('Vote'.'id') AS Contestant__votes,' Vote'.''contestant_id' FROM 'votes' AS' Vote' O WH 1 = 1 GROUPE PAR 'Vote'.''contestant_id' AND' Vote'.''contestant_id' IN (1, 2) –