Genius表 存放着最基本的天才用户信息, 其主键是g_id;
Education表 存放的是天才用户受到的教育信息,其主键是ted_id;
两个表是通过 Education表 的 ted_gid 进行关联的;现在的需求是,通过g_id 查询出某一个天才所受过的教育,且要根据时间做一下排序,否则结果不直接。$this->hasMany('xxxx','xxxx','xxxx')->order('排序字段');但是想想毕竟很多地方都有可能调用,这里用顺序,那里用倒叙,改了模型毫无意义,这个方案就作罢了,还是想点别的办法吧~~$genius_info = GeniusModel::where("g_id",$id)->find();//插叙某天才的基本信息
$edu_list = $genius_info->education->order("ted_sdate asc")->toArray();//获取排序后的结果
理想很丰满,但是现实很骨感,报错了.....
致命错误: Call to undefined method think\model\Collection::order()既然报错了,那就找找提示类跟【其父类】吧! 最终在其父类找了一个方法---sort(xxxxx)【对数据排序,并返回排序后的数据组成的新 Collection 实例,参数是一个回调函数】.哦,原来可以有排序啊,那就试试吧,修正代码如下:$genius_info = GeniusModel::where("g_id",$id)->find();//获取基础表信息
$edu_list = $genius_info->education->sort(function($pre,$after){
if($pre->ted_sdate<$after->ted_sdate){
return "-1";
}else{
return "1";
}
});最后想要看一下结果,var_dump($edu_list->toArray());符合要求~~ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。