Custom Pagination in CakePHP
To continue on last weeks thought of a “lite” forum, I needed 2 tables (Forums, Posts). Since this is a “lite” forum, I did not want to create a mid-table labeled topics, so I incorporated that in the Posts table. The other reasoning behind this, is that to create a hybrid forum/blog, the topic is really just a beginning post in the thread, so keep those in the Posts table, just mark it as a topic to differentiate this from the other posts.
I created two controllers, forums_controller.php and posts_controller.php. All of the links on the application will point to the forums_controller.php file. The models need to be created, forum.php and post.php, with the relationships.
The file user.php (User model) needs to have a “hasMany” relationship with Posts.
var $hasMany = array( 'Post' => array('className' => 'Post', 'foreignKey' => 'post_id', 'dependent' => false, ) );
The Forum model needs a “hasMany” relationship with the Post model
var $hasMany = array( 'Post' => array('className' => 'Post', 'foreignKey' => 'forum_id', 'dependent' => false, ) );
The Post model needs a “belongsTo relationship with both the Forum and User models.
var $belongsTo = array( 'Forum' => array('className' => 'Forum', 'foreignKey' => 'forum_id', 'conditions' => '', 'fields' => '', 'order' => '' ), 'User' => array('className' => 'User', 'foreignKey' => 'user_id', 'conditions' => '', 'fields' => '', 'order' => '' ) );