splinker分页情况下还怎么通过linker的条件限制显示数据

#1 totalstotal

$result = $this->model->spPager($this->spArgs('page', 1), $this->spArgs('rows', 20))->findAll($conditions);
$rows = $this->model->spLinker()->run($result);

看论坛说分页时涉及的splinker要这么用,但是问题来了,我在model的$linker里设置了个条件,不满足则整条记录都不显示,而上面这种是先指针对单模型判断并分好页,然后再判断外联模型的条件的,这是如果$linker里的条件不满足,最多就是最终得出记录的外联字段为空而已。。求解决办法,谢谢!

2014-08-26 09:52:40

#2 jake

比较绕,或者直接写sql然后再分页吧。从逻辑上顺序就不太对

2014-08-26 12:11:32

#3 totalstotal

jake 发表于 2014-8-26 12:11
比较绕,或者直接写sql然后再分页吧。从逻辑上顺序就不太对
这个主要是做搜索功能是用到。譬如有 用户表A 和 用户日志B ,A表有用户id,用户姓名字段,B表有记录用户id,日志类型,日志内容字段。并在用户模型里建立了和日志模型的一对多关联。现在要根据用户名和日志类型这2个搜索条件搜索数据,而且还要考虑分页,所以出现了一开始我问的问题,这个逻辑挺正常的啊,这种情况,不写sql只靠linker怎么实现。

2014-08-27 13:21:38

#4 totalstotal

http://www.speedphp.com/thread-308-1-1.html
根据这个说的,splinker涉及分页时,先要spPager查出内容再spLinker,像上面的多表搜索,日志类型是定义在spLinker里的,用户模型先spPager来find出数据了,那就不一定能满足是否为指定日志类型的了,最多就是日志表的关联信息为空而已(实际表现就是数据对应的map字段为空)。

2014-08-27 13:30:04

#5 totalstotal

而且因为涉及分页,就算得出记录后把数据外联字段为空的记录删除,但最后返回的记录总数也不符合每页的pageSize了。

2014-08-27 13:32:24

#6 jake

。。。一般建议太复杂的查询,关联还有分页什么的,还是直接构造SQL和分页 会好点。

2014-08-27 14:08:18