当前位置 : 首页 > thinkphp学习 > mvc模型解释

mvc模型解释

现在流行mvc模式编程,有点很多,可以把控制controller  模型model 显示view分开来,是的要改网页界面方便,底层访问数据库等等都方便。

前面在用 C#的mvc模型编程,发现改别人程序比较方便,也看得懂,只是在建立 model模型时比较麻烦,要一个表一个表建立,然后再对应到控制上去,不过还好有代码生成器可以使用。

这几天在用thinkphp看mvc,前面一直看这个mvc中的model真的简单啊,是一个控制器对应一个模型,而不是去对应工作表,当然最好是每个表建立一个模型,但是这个模型居然可以是空的,然后控制器就可以操作模型进行数据读写了,比C#简单了不是一点点。

<?php  //Grade model

namespace app\index\model;

use think\Model;

use traits\model\SoftDelete;

class Grade extends Model

{

    //引用软删除方法集

    use SoftDelete;

    //设置当前表默认日期时间显示格式

    protected $dateFormat = 'Y/m/d';

    //定义表中的删除时间字段,来记录删除时间

    protected $deleteTime = 'delete_time';

    // 开启自动写入时间戳

    protected $autoWriteTimestamp = true;

    protected $createTime = 'create_time';

    protected $updateTime = 'update_time';

    // 定义自动完成的属性

    protected $insert = ['status' => 1];  //这里坐了软删除,所以设计了很多关于时间的,没有也没关系

    // 定义关联方法

    public function teacher()  //关联到teacher表里面,就是在班级表里取出老师信息

    {

        // 班级表与教师表是1对多关联,就是一个班级有多个老师上课,如果只有一个可以用hasOne  //区别,一对多返回一个数组 包括所有该班级老师信息

        return $this->hasMany('Teacher','grade_id');               //一对一返回的一个数组,只有这个老师信息,所以直接可以用 $value->teacher->name就可以取得

    }


    // 定义关联方法  

    public function student()    //与学生表的关联,应该是Student模型关联 有哪些学生在这个班里

    {

        return $this->hasMany('Student');

    }

}

这个模型就可以了,最主要的定义就是跟其他的表的关联  

下面是对应的controller控制器 Grade.php

namespace app\index\controller;

use app\index\model\Grade as GradeModel;

use app\index\model\Teacher;

use think\Request;

class Grade extends Base

{

    //班级列表

    public function  gradeList()

    {

        //获取所有班级表数据

        $grade = GradeModel::all();

        //获取记录数量

        $count = GradeModel::count();

        //遍历grade表

        foreach ($grade as $value){

            $teacher="";

            foreach ($value->teacher as  $tea) {  //有多个教师时,需要把教师都列出来放入数组  这个就是   hasMany使得是多个数组,必须循环取出所有老师信息

                $teacher=$teacher." ".$tea['name'];

            }

            //$teacher = json_encode($teaname);

            $data = [

                'id' => $value->id,

                'name' => $value->name,

                'length' => $value->length,

                'price' => $value->price,

                'status' => $value->status,

                'create_time' => $value->create_time,

                //用关联方法teacher属性方式访问teacher表中数据  如果是hasOne这里直接就用这种方法就可以了

                //'teacher' => isset($value->teacher->name)? $value->teacher->name : '<span style="color:red;">未分配</span>',

                'teacher' =>$teacher,

            ];

            //每次关联查询结果,保存到数组$gradeList中

            $gradeList[] = $data;

        }

        $this -> view -> assign('gradeList', $gradeList);  //取得的数据数组绑定到gradeList上,在view中直接就可以使用了

        $this -> view -> assign('count', $count);


        return $this -> view -> fetch('grade_list');  //渲染网页view文件夹下的  grade_list.html

    }


thinkphp学习 /
分享:
更多
« 上一篇下一篇 »

相关文章