ThinkPHP5 Model分层及多对多关联的建立
2018-06-22 04:58:43来源:未知 阅读 ()
笔者最近入手ThinkPHP5,准备用它来实现一个学生作业管理系统。简单的说就是学生在上面交老师布置的课程作业,老师也可以发布修改作业。过程中势必会碰到学生、班级和老师之间的关系。它们之间的关系是多对多的关系。下面我们主要分析班级和作业的关系。每个班级的学生可以有多个作业,同样的作业也可以布置给不同的班级。所以班级和作业之间的关系是多对多的关系。班级表(tb_clas),作业表(tb_task),中间表(tb_task_class)。下面写Model层代码,将Model层细分为logic层、service层、Model层(将数据与逻辑分开)。
Model层代码如下:
1.班级(clas.php)
<?php namespace app\index\model; use think\Model; class Clas extends Model { public function task() { return $this->belongsToMany('Task','tb_task_clas'); } }
2.作业(task.php)
<?php namespace app\index\model; use think\Model; class Task extends Model { public function clas() { return $this->belongsToMany('Clas','tb_task_clas'); } }
这样班级和作业模型之间的多对多关系就建立了。下面来实现查找某个学生所有被布置的作业列表。这又牵涉到学生表tb_Student,我们在学生模型的logic中来写这个逻辑(将数据与处理分开)
3.学生模型的Logic层
<?php namespace app\index\logic; use think\Model; use app\index\model\Clas; class Student extends Model { //获取学生所在班级的所有作业 public function getTasks($stuno) { $stu=$this::get(['stu_no'=>$stuno]); $clas=Clas::get(['clas_id'=>$stu['clas_id']]); return $clas->task; } }
这样在controller中实例化该logic后就可以查找任意学生所要做的作业了,Controller中代码如下:
$stulogic=\think\Loader::model('Student','logic'); $stuno=$request->session('stuno'); //dump($stulogic->getTasks($stuno)); $tasklist=$stulogic->getTasks($stuno); //dump($tasklist); $this->assign('tasklist',$tasklist);
页面中用一个volist就可以搞定了:
{volist name="tasklist" id="task"} <li> <h4>{$task.task_title}</h4> <p>{$task.task_content}</p> </li> {/volist}
以上就是我用thinkphp5过程中一点经验分享,如果有不妥的地方,欢迎批评指正!
关注“顶求网”订阅号,获取更多技术文章和教程推送信息
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- thinkPHP5项目中实现QQ第三方登录功能 2020-02-19
- thinkPHP5分页功能实现方法分析 2020-02-08
- thinkPHP5实现数据库添加内容的方法 2019-12-19
- thinkphp5路由心得 2019-04-18
- thinkPHP5.0 URL路由优化 2019-04-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash