SpeedPHP/关联结果的条件限制
SpeedPHP | 快速入门 | 访问交互 | 数据操作 | 框架概述 | 模板引擎 | 优化加速 | 开发指南 | 数据模型 | API参考 |
关联结果的条件限制[ ]
在一对一关联的讲述中,我们曾经简单说明了对于关联搜索结果的一些限制,这里我们再来看一下这些条件限制功能。
对于关联结果的条件限制,有很多作用,下面是一部分的作用(但不局限于):
- 搜索多个分类下的前10篇文章(limit,sort)
- 搜索多个班级中,排名在5-10位的学生资料(condition,sort)
- 显示多位用户最新的五个留言(sort,limit)
- 显示多位用户最旧的十篇日志(sort,limit)
- 在显示多个分类下的文章时,只返回文章的标题和ID号(field)
- 搜索多班级中,随机10位考试分数在90分以上的女生的姓名(limit,sort,condition,field)
- 搜索每个文章分类,并且附带每个分类下文章的总数(countonly)
- 一表双关联,先得出每个分类总共有多少文章数量,然后再返回前十篇文章(countonly, limit ,sort)
在关联linker中[ ]
- condition,对关联的附加条件
在关联结果中,condition的写法和find/findAll的参数$condition是一样的,可以是数组也可以是字符串格式。
- countonly,在关联查找时是否只返回关联结果的记录数量,而并不返回全部结果。
countonly取值TRUE/FALSE。
- sort,返回关联结果的排序
格式和find/findAll一样,默认是主键正序。
- field,返回关联结果的限定字段
格式和find/findAll一样,默认是*,即返回全部字段
- limit,返回关联结果的数量,格式和find/findAll一样,默认是全部。
从以上的说明可以看出,在关联linker内,参数和findAll是大同小异的,所以我们可以借助这些参数,来“实现”在关联表中“findAll”。
搜索多个分类下的前10篇文章(limit,sort)[ ]
var $linker = array( array( 'type' => 'hasmany', 'map' => 'articles', 'mapkey' => 'type_id', 'fclass' => 'm_article', 'fkey' => 'type_id', 'limit' => '10', 'sort' => 'articleid DESC', 'enabled' => true, ), array( ... ) );
搜索多个班级中,排名在5-10位的学生资料(condition,sort)[ ]
var $linker = array( array( 'type' => 'hasmany', 'map' => 'students', 'mapkey' => 'class_id', 'fclass' => 'm_student', 'fkey' => 'class_id', 'sort' => 'paiming ASC', 'condition' => 'paiming >= 5 AND paiming <= 10', 'enabled' => true, ), array( ... ) );
显示多位用户最新的五个留言(sort,limit)[ ]
var $linker = array( array( 'type' => 'hasmany', 'map' => 'theguestbooke', 'mapkey' => 'user_id', 'fclass' => 'm_guestbook', 'fkey' => 'user_id', 'sort' => 'post_time DESC', 'limit' => '5', 'enabled' => true, ), array( ... ) );
显示多位用户最旧的十篇日志(sort,limit)[ ]
var $linker = array( array( 'type' => 'hasmany', 'map' => 'bloglink', 'mapkey' => 'user_id', 'fclass' => 'm_blog', 'fkey' => 'user_id', 'sort' => 'post_time ASC', 'limit' => '10', 'enabled' => true, ), array( ... ) );
在显示多个分类下的文章时,只返回文章的标题和ID号(field)[ ]
var $linker = array( array( 'type' => 'hasmany', 'map' => 'articles', 'mapkey' => 'type_id', 'fclass' => 'm_article', 'fkey' => 'type_id', 'field' => 'title, articleid', 'enabled' => true, ), array( ... ) );
搜索多班级中,随机10位考试分数在90分以上的女生的姓名(limit,sort,condition,field)[ ]
var $linker = array( array( 'type' => 'hasmany', 'map' => 'students', 'mapkey' => 'class_id', 'fclass' => 'm_student', 'fkey' => 'class_id', 'sort' => 'Rand()', // 等于order by Rand(),mysql中是通过order by rand()来获取随机记录的 'condition' => 'sex = "female"', 'field' => 'name, sex, class_id', // 因为条件中有性别,所以field中务必要带上sex字段,还有主键也是必须的 'limit' => '10', 'enabled' => true, ), array( ... ) );
搜索每个文章分类,并且附带每个分类下文章的总数(countonly)[ ]
var $linker = array( array( 'type' => 'hasmany', 'map' => 'articlecounter', 'mapkey' => 'type_id', 'fclass' => 'm_article', 'fkey' => 'type_id', 'countonly' => true, 'enabled' => true, ), array( ... ) );
一表双关联,先得出每个分类总共有多少文章数量,然后再返回前十篇文章(countonly, limit ,sort)[ ]
var $linker = array( array( 'type' => 'hasmany', 'map' => 'articles', 'mapkey' => 'type_id', 'fclass' => 'm_article', 'fkey' => 'type_id', 'limit' => '10', 'sort' => 'articleid DESC', 'enabled' => true, ), array( 'type' => 'hasmany', 'map' => 'articlecounter', 'mapkey' => 'type_id', 'fclass' => 'm_article', 'fkey' => 'type_id', 'countonly' => true, 'enabled' => true, ), );
参考来源[ ]
http://speedphp.com/manual.html
SpeedPHP使用手册导航 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|