Monday, November 19, 2012

Re: Pagination

And when I say I can't get it to work it is because using the code from Andras gives the error...

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'paginate' at line 1
SQL Query: paginate


On 19 Nov 2012, at 23:41, Paul Willis <paul.willis@me.com> wrote:

Thanks for the replies but I can't seem to get any solution to work I wonder if it is because I stupidly missed a vital detail...

My posts and categories are a HABTM relationship so I have no category_id in the posts table.

I have a posts table, a categories table and a categories_posts table

PW

On 19 Nov 2012, at 22:22, lowpass <zijn.digital@gmail.com> wrote:

If your controller already declares a $paginate var it would be better
to add the conditions to it rather than redeclare the entire array.
Also, you can use the Post.category_id in the conditions.

$this->paginate['conditions'] = array('Post.category_id' => $id);

On Mon, Nov 19, 2012 at 4:15 PM, Andras Kende <andras@kende.com> wrote:

something like this should work:

      public function category($id = null) {
              $this->paginate = array(
                      'conditions' => array(
                              'Category.id' => $id
                      )
              );
              $posts = $this->Post->Category->paginate('Category');
              //print_r($posts);  // to test here ...
              $this->set(compact('posts'));
      }

But since you paginating categories it may be better to do this from the categories controller..

Andras Kende
http:///www.kende.com

On Nov 19, 2012, at 12:57 PM, Paul Willis <paul.willis@me.com> wrote:

In my PostsController.php I have a function to find all the posts from a category…

    public function category($id = null) {
            $this->set('posts', $this->Post->Category->find('first', array(
                    'conditions' => array(
                            'Category.id' => $id
                    )
            )));
    }


This works fine and all my posts for the particular category are returned.

However I obviously get every post in that category and so now I would like to use paginate but I'm not sure how to add it to the above function.

PW

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

---
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.
Visit this group at http://groups.google.com/group/cake-php?hl=en.



--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

---
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.
Visit this group at http://groups.google.com/group/cake-php?hl=en.



--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

---
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.
Visit this group at http://groups.google.com/group/cake-php?hl=en.



--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

---
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.
Visit this group at http://groups.google.com/group/cake-php?hl=en.



No comments: