php多端共用model,Model分层及多对多关联的建立

笔者最近入手ThinkPHP5,准备用它来实现一个学生作业管理系统。简单的说就是学生在上面交老师布置的课程作业,老师也可以发布修改作业。过程势必会牵涉到学生、班级和老师之间的关系。它们之间有的关系是多对多的关系。

下面我们主要分析班级和作业的关系。每个班级的学生可以有多个作业,同样的作业也可以布置给不同的班级。所以班级和作业之间的关系是多对多的关系。可以按照这个逻辑将表分为:班级表(tb_clas),作业表(tb_task),中间表(tb_task_class)。下面写Model层代码,将Model层细分为logic层、service层、Model层(将数据与逻辑分开)。

Model层代码如下:

1.班级(clas.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)

~~~

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层

~~~

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"}

{$task.task_title}

{$task.task_content}

{/volist}

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值