Ho un'applicazione CakePHP 1.3 e mi piace davvero il Containable behavior per il recupero dei dati.CakePHP Model: COUNT (*) in Containable
Supponiamo di avere post nella relazione uno-a-molti con commenti. Uso Contenibile per interrogare (per impaginazione) un elenco di tutti i Post e dei Commenti di appartenenza. Ma sono interessato solo a quanti commenti ha ogni post. Non ho trovato alcun modo per raggiungere questa query contenibile senza recuperare tutte le righe di commenti. Ho provato:
$this->paginate=array(
'fields' => 'Post.title, Post.created',
'contain' => array('Comment'=>'COUNT(*) AS count'),
);
risultati in "Modello" Commento "non è associato al messaggio di errore" Conteggio "del modello.
$this->paginate=array(
'fields' => array('Post.title, Post.created'),
'contain' => array('Comment'=>array('fields'=>'COUNT(*) AS count'),
);
non funziona, set di risultati contiene per ogni post un array commento vuoto tranne l'ultimo, dove contiene il campo di conteggio, ma avere il numero di tutte le osservazioni non solo quelli appartenenti.
mia altra ipotesi era
$this->paginate=array(
'fields' => 'Post.title, Post.created, COUNT(Comment.id)',
'contain' => array('Comment'=>array('fields'=>''),
);
ma questo si traduce in un errore, perché le relazioni hasMany vengono interrogati in modo indipendente, in modo che la tabella di risposta non è nella query per le voci sul post. Come posso contare il numero di commenti di un post?
Questa è una buona idea, ma non risolve il problema per query più complesse in cui il mantenimento di un conteggio associato a una riga non funzionerebbe (ad esempio un sistema di segnalazione in cui determinate condizioni vengono scelte dall'utente). Non c'è altro modo per ottenere un conteggio utilizzando contenibile? – Zxaos