Paul,

Sorry for confusion.

Daniel first question was to display posts on a page (posts belongs to category 
and user)

I suggested earlier its better to start the query from post instead from 
category, so you could get
anything from the 3 tables with a single query..

If there are more related models in posts table you can add contain like:

$categories = $this->Category->Post->find('all', array(
        'fields' => array(
                'Category.name',
                'Post.id',
                'Post.comment',
                'User.username',
        ),
        'conditions' => array('Category.id' => $id),
        'contain' => array(
                'Category', 'User'
        )
));

Also its resulting a cleaner array,  I guess its easier to paginate as well..


Andras Kende



On Nov 5, 2011, at 5:59 AM, WebbedIT wrote:

> @Andras: Have you read the rest of the thread? Jeremy is trying to
> show Daniel how to use containable so he can specifically say what
> models and fields he wants to fetch during his find call.  It's very
> unhelpful you chiming in 25 messages into the thread telling him to
> pull the model and ALL it's unnecessary related model data (a point
> that was covered earlier in the thread).
> 
> @Daniel: Jeremy has given you all the correct information.  The
> following will pull the category matching $id and all it's matching
> Posts and their Users (if you have your relationships set correctly.
> 
> $this->Category->find(
>  'first',
>  array(
>    'conditions' => array('Category.id' => $id),
>    'Contain' => array(
>      'Post' => array(
>        'User' => array(
>          'User.id',
>          'User.name'
>        )
>      )
>    )
>  )
> )
> 
> If you're still having problems understanding this please go back to
> the cookbook and follow what it tells you step by step, there is
> nothing in this thread which is not covered there as this is basic
> stuff:
> http://book.cakephp.org/view/1323/Containable
> 
> HTH, Paul.
> 
> On Nov 4, 11:06 pm, Andras Kende <and...@kende.com> wrote:
>> Daniel,
>> 
>> The easiest way to do what you need is:
>> 
>> <?php
>> class CategoriesController extends AppController {
>> 
>> public function index($id = null) {
>> $posts = $this->Category->Post->find('all', array(
>> 'conditions' => array('Category.id' => $id),
>> ));
>> // print_r($posts); to debug...
>> $this->set(compact('posts'));
>> 
>> }
>> }
>> 
>> This will just do a single query with 2 left joins..
>> Just make sure all 3 models has the relationships setup correctly..
>> 
>> Andras Kende
> 
> -- 
> Our newest site for the community: CakePHP Video Tutorials 
> http://tv.cakephp.org 
> Check out the new CakePHP Questions site http://ask.cakephp.org and help 
> others with their CakePHP related questions.
> 
> 
> To unsubscribe from this group, send email to
> cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
> http://groups.google.com/group/cake-php

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to