Hi all! I'll ask a question first and then I'll give a background to
it for just in case that'd give any insight.

Is it better to query MySQL table once for all posts (which may be
thousands of rows) or about 30 - 50 queries with limit 1?

The reason I ask is that I build a menu of categories and I don't want
to show categories that have no posts that are published and the
logged user is allowed to see. Here's the code I use to get only those
categories that I want:

$Category = ClassRegistry::init('Category');
$categoriesForTree = $Category->find('all', array('order' => 'lft
ASC',
                                                  'contain' => array(
                                                        'Post' => array(
                                                                'fields' => 
array('id','level','status'),
                                                                'conditions' => 
array('Post.status >' => 0,
                                                                                
                          'Post.level <=' => $loggedUser['Group']['level']),
                                                                //'limit' => 1, 
// -- this doesn't work and just returns one
post of all categories
                                                         ),
                                                        ),
                                                  ));

How 'contain' works is it queries for all categories first, and then
runs a second query to get all posts from all the categories, and that
feels like an overkill to me, because I don't need all posts, I just
need to know if there's at least one post under given criteria in
every category or not.
if I set "'limit' => 1", as commented out in the code above, it will
not return one post for every category (something I would expect it
did), but limits the query so only one lucky category happens to get
one post as a child (which doesn't make sense to me, as far as
Containable behavior design is concerned).

Anyway, I end up having two options: either leave it with the above
code or modify it and iteratively check every category with minimum of
returned data.

Thanks for any insight on this.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to