请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 3332|回复: 5

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

  [复制链接]
发表于 2014-8-26 09:52:40 | 显示全部楼层 |阅读模式
$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-8-26 12:11:32 | 显示全部楼层
比较绕,或者直接写sql然后再分页吧。从逻辑上顺序就不太对
 楼主| 发表于 2014-8-27 13:21:38 | 显示全部楼层
jake 发表于 2014-8-26 12:11
比较绕,或者直接写sql然后再分页吧。从逻辑上顺序就不太对

这个主要是做搜索功能是用到。譬如有 用户表A 和 用户日志B ,A表有用户id,用户姓名字段,B表有记录用户id,日志类型,日志内容字段。并在用户模型里建立了和日志模型的一对多关联。现在要根据用户名和日志类型这2个搜索条件搜索数据,而且还要考虑分页,所以出现了一开始我问的问题,这个逻辑挺正常的啊,这种情况,不写sql只靠linker怎么实现。
 楼主| 发表于 2014-8-27 13:30:04 | 显示全部楼层
http://www.speedphp.com/thread-308-1-1.html
根据这个说的,splinker涉及分页时,先要spPager查出内容再spLinker,像上面的多表搜索,日志类型是定义在spLinker里的,用户模型先spPager来find出数据了,那就不一定能满足是否为指定日志类型的了,最多就是日志表的关联信息为空而已(实际表现就是数据对应的map字段为空)。
 楼主| 发表于 2014-8-27 13:32:24 | 显示全部楼层
而且因为涉及分页,就算得出记录后把数据外联字段为空的记录删除,但最后返回的记录总数也不符合每页的pageSize了。
发表于 2014-8-27 14:08:18 | 显示全部楼层
。。。一般建议太复杂的查询,关联还有分页什么的,还是直接构造SQL和分页 会好点。
您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-8-8 09:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表