笔者最近入手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过程中一点经验分享,如果有不妥的地方,欢迎批评指正!

关注“顶求网”订阅号,获取更多技术文章和教程推送信息

最新文章

  1. elipse + maven + tomcat + springMVC环境搭建
  2. 浅谈objective—C管理内存
  3. 安装MSITVPN连接的时候弹出:需要(未知)上的文件&#39;MSITVPN.bmp。
  4. 提高IIS的并发量
  5. python中,str和repr的区别
  6. 八种创建等高列布局【出自w3c】
  7. javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
  8. CentOS6.9下离线部署Django项目
  9. Mybatis学习之一
  10. db.properties是干什么用的
  11. laravel简书(1)
  12. 解决 samba 服务器 windows 多重连接
  13. P1616疯狂的采药
  14. 20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
  15. yii2 高级版新建一个应用(api应用为例子)
  16. HDU 1428
  17. iphone设置fiddler代理测试
  18. 关于UIScrollView有些你很难知晓的崩溃情形
  19. Diamond 3.5简易教程(一)------工程的建立
  20. mysql的rand函数

热门文章

  1. AngularJS 使用 uppercase 过滤器的表格
  2. vue webpack多页面构建
  3. js中实现页面跳转(返回前一页、后一页)
  4. Angularjs基础(七)
  5. #leetcode刷题之路26-删除排序数组中的重复项
  6. 仿LordPE获取PE结构
  7. 【c学习-12】
  8. maven-认识
  9. sql语句中#{}和${}的区别
  10. Centos7 搭建 hadoop3.1.1 集群教程