求助:spLinker 和 spPager配合使用遇到问题

#1 istony

现在有一个主表A和一个从表B,A表中的每一条记录在B表中有多条记录与之对应,是一对多的关系。现在配置好了两表之间的关联,并且可以正常取得数据。现在的问题是:当设定一个条件后,从A表取得n条满足条件的记录,同时在B表获得关联的m条记录(m>=n),然后想以m条数据做分页,请问,该如何操作?

现在的代码如下:dump( $userObj->spLinker()->spPager($this->spArgs('page', 1), 5)->findAll($conditions) );这样得到的数组内容是以A表查询得到的结果作为分页数据的,因为m肯定不小于n,所以需要以m做分页,请问能不能实现,该如何操作?谢谢jake老大。

2011-04-16 00:09:48

#2 jake

可以实现,不过不是直接实现,因为这个需求的问题在于页码上面。

按上面说的这个页面,将会显示n个分页(对B表的分页),那么有n个页码。spPager只能支持一个页码($this->spArgs('page', 1)),所以如果要做到n个页码,那么就要有n个spPager。

另外,我考虑过全部n个页码是同一个的情况,不过这很难统一,因为这里有n个m,每个m都有可能不同的,那么针对m的分页也不可能统一,所以只能多个spPager,即使是页码是同一个的时候。

2011-04-16 08:03:07

#3 istony

好的,问题转换了一下,从本应用中的实际问题出发,没有使用关联,直接将$conditions使用字符串,包含一个子查询,这样spPager->findAll()出来的分页就可以了

2011-04-16 19:52:45

#4 小双

我也遇到上面的问题,在使用一对一关联的时候在使用分页, 比如$userObj->spLinker()->spPager($this->spArgs('page', 1), 5)->findAll($conditions) ;就这种情况,页码不能显示,求解答!

2011-04-20 19:06:55

#5 jake

回复 4 小双

上面说的是多个分页,而且只是问一个思路。

建议你检查一下getPager的数据,在记录不够的时候是不会有值的。


http://speedphp.com/model-complex.html

2011-04-20 19:13:36

#6 小双

如果是$userObj->spLinker()->spPager($this->spArgs('page', 1), 5)->findAll($conditions) ;这样的话,显示分页但关联的表的数据就不显示了
如果是$userObj->spPager($this->spArgs('page', 1), 5)->spLinker()->findAll($conditions) ;这样就只显示关联表的数据而不能显示分页?
记录是够的,刚测试的!是不是spLinker()和spPager()不能同时使用!

2011-04-20 19:18:46

#7 jake

回复 6 小双


建议你这样试试:

                $result = $fansObj->spPager($this->spArgs('page', 1), 10)->findAll($condition,'fansid DESC');
                $this->pager = $fansObj->spPager()->getPager();
                $this->fanslist = $fansObj->spLinker()->run($result);

2011-04-21 07:19:04

#8 小双

回复 7 jake


    嗯,这样可以了!呵,问题解决了!

2011-04-21 16:24:05

#9 枪炮玫瑰

这样分析最容易理解,真幸运刚遇到问题 就找到这个帖子了。

2012-08-21 13:40:30