more sense to put them in the model.
// Get all users with documents:
$this->User->bindModel(array(
'hasOne' => array(
'CheckDocument' => array(
'className' => 'Document',
'fields' => 'CheckDocument.id',
'type' => 'inner'
)
)
), false);
$data = $this->User->find('all', array(
'group' => 'User.id',
'recursive' => 0 // At least 0 for joins to work
));
(No conditions needed since you're using an inner join. If you use a
left join (the default) you'll have to add a condition)
// Get all users with no documents:
$this->User->bindModel(array(
'hasOne' => array(
'CheckDocument' => array(
'className' => 'Document',
'fields' => '(COUNT(CheckDocument.id)) AS num_documents',
'type' => 'left'
)
)
), false);
$data = $this->User->find('all', array(
'group' => 'User.id',
'recursive' => 0, // At least 0 for joins to work
'conditions' => array(
'CheckDocument.id IS NULL'
)
));
// Get all users with 3 or more documents, ordered by number of
documents:
$this->User->bindModel(array(
'hasOne' => array(
'CheckDocument' => array(
'className' => 'Document',
'fields' => '(COUNT(CheckDocument.id)) AS num_documents',
'type' => 'inner'
)
)
), false);
$data = $this->User->find('all', array(
'group' => 'User.id',
'recursive' => 0, // At least 0 for joins to work
'conditions' => array(
'num_documents >=' => 3
),
'order' => 'num_documents DESC'
));
hth
grigri
On Oct 27, 3:20 pm, Mathew <nfoscar...@yahoo.com> wrote:
> The only thing I can think of is to have a field in User that I update
> when adding Documents, and then filter on that field.
>
> This seems kind of like a hack?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---
No comments:
Post a Comment