Re: Cakephp Paginate with associated tables

2008-10-28 Thread rainmore

Hi ,

I realize there is no one working on this google group.

Finally, I found the solution by myself.  That is to use container,
which can be found by http://book.cakephp.org/view/474/Containable.

Also, in order to get the exactly result, I'd like to add more
reference key or (foreign key).

In my case, I change the hasMany relationship to belongsTo. Then, use
unbindModel and bindModel to bind the relationship as I want.

HTH

--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Cakephp Paginate with associated tables

2008-10-24 Thread rainmore

Hi ,

This is the first time I post a request to this group. I wish I could
find a solution for this problem.

2 tables are
post (
id int not null auto_increment,
latest_content_id int null
primary key(id)
)

postcontent(
id int not null auto_increment,
title varchar(255)  not null,
body text null,
primary key(id)
)

Model-Post:
class Post extends AppModel {

var $name = 'Post';

function paginateCount($conditions = null, $recursive = null)
{
 $this-bindModel(array(
'belongsTo' = array(
'Postcontent' = array('className' = 'Postcontent',
'foreignKey' = 
'latest_content_id',
'dependent' = 
false,
'conditions' = 
'',
'fields' = 
'Postcontent.title',
'order' = '',
'limit' = '1',
'offset' = '',
'exclusive' = 
'',
'finderQuery' 
= '',
'counterQuery' 
= ''
)
)
));
return $this-findCount($conditions, $recursive);
}

function paginate($conditions = null, $fields = null, $order = null,
$limit = null, $page = 1, $recursive = null)
{
 $this-bindModel(array(
'belongsTo' = array(
'Postcontent' = array('className' = 'Postcontent',
'foreignKey' = 
'latest_content_id',
'dependent' = 
false,
'conditions' = 
'',
'fields' = 
'Postcontent.title',
'order' = '',
'limit' = '1',
'offset' = '',
'exclusive' = 
'',
'finderQuery' 
= '',
'counterQuery' 
= ''
)
)
));
return $this-findAll($conditions, $fields, $order, $limit,
$page, $recursive);
}
}

class Postcontent extends AppModel {

var $name = 'Postcontent';

}

View:

th width=30%?php echo $paginator-
sort('Title','Postcontent.title');?/th

SQL:

SELECT COUNT(*) AS `count` FROM `posts` AS `Post` LEFT JOIN
`postcontents` AS `Postcontent` ON (`Post`.`latest_content_id` =
`Postcontent`.`id`) WHERE 1 = 1 1   1   1

SELECT `Post`.`id`, `Post`.`sequence`, `Post`.`postcategory_id`,
`Post`.`latest_content_id`, `Post`.`live_content_id`,
`Post`.`isFeatured`, `Post`.`isActive`, `Post`.`created`,
`Post`.`createdBy`, `Post`.`modified`, `Post`.`modifiedBy`,
`Postcontent`.`title`, `Postcontent`.`poststatus_id` FROM `posts` AS
`Post` LEFT JOIN `postcontents` AS `Postcontent` ON
(`Post`.`latest_content_id` = `Postcontent`.`id`) WHERE 1 = 1 LIMIT 30

When I do the paginate on view. I found the Postcontent.title can NOT
be sorted. The SQL only does not work on join table field.

Is a bug of Cakephp? If not, what's wrong on my code.

BTW, the version of cakephp I use is 1.2.0.7692 RC3.

Thanks in advance.

Felix Jie Rong

--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---