欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(9)学习tp5之模型

程序员文章站 2024-03-19 18:57:40
...

系统学习tp5框架,请点击下面的连接

(1)学习tp5之助手函数得原理解析

(2)学习tp5之常量、自动加载、命名空间

(3)学习tp5之配置文件

(4)学习tp5之路由类型,定义,动态注册,过滤,闭包,miss(默认),资源路由

(5)学习tp5之请求

(6)学tp5之响应

(7)学习tp5之控制器原理和使用

(8)学习tp5之ORM操作数据库

(9)学习tp5之模型

(10)学习tp5之视图

(11)学习tp5之命令行的使用和验证表单令牌

(12)学习tp5之验证码和缓存

(13)学习tp5之上传图片

(14)学习tp5之日志

(15)学习tp5之 自定义命令行


模型命名:使用去掉前缀的表名(大驼峰).php

注意:使用模型中记得修改配置文件

// 数据集返回类型
'resultset_type'  => 'collection', //手册-》数据库-》数据集

1、路由

(9)学习tp5之模型

2、控制器中的代码(当前是UserController控制器)

    //往模型中【插入】数据
    public function add(){

        //二维插入多条,一维插入1条
        $data = [
            ['name' => 'tp', 'password' => '123', 'fee' => 99],
            ['name' => 'tp1', 'password' => '123', 'fee' => 99]
        ];

        $obj = new User();
        $obj->userAdd($data);   //调模型中的方法
    }

    //在模型中【查询】数据
    public function select(){
        $res = User::userSelect();  //调静态

        $obj = new User();
        $ratioRes = $obj->selectRatioResult();
        dump($res);
    }

    //关联模型
    public function relevanceModel(){
        //总结:1、查询和更新是以属性的形式调,不要加();2、get()里面传啥值,看sql追踪的,一般是外键

        //dump(User::get(2)->userInfo->toArray());    //关联【查询】

        //关联【新增】是给user_info(b)表新增。
        //User::get(9)->userInfo()->save(['email'=>'aaa@qq.com','mobile'=>'2222']);

        //关联【更新】更新第1条。先查出一条外键=3的。更新时拿外键对应的本表id做条件
        User::get(1)->userInfo->save(['email'=>'aaa@qq.com','mobile'=>'222','user_id'=>'1']);   //只适用于1对1
    }

3、模型中的代码(当前是User模型)

public function userAdd($data){
    //插入单条,方式1,使用父类
    $this->data($data);
    $this->save();

    //插入单条,方式2,使用ormDb
    Db::name('user')->insert($data);

    //插入多条
    $this->saveAll($data);

}


//使用模型1,需要将数据库配置文件中的'resultset_type'  => 'collection',改成数据集这样方便操作
public static function userSelect(){
    //使用模型的 静态方法。本类调父类中的静态方法
    //$res = self::get('1');     //查单条
    $res = self::all([1,3,4]);   //查多条
    return $res->reverse()->toArray();  //reverse()倒序是手册-》数据库-》数据集中的方法
}

//使用模型2
public function selectRatioResult(){
    //使用ormDb
    $dbRes = Db::name('user')->where(['id'=>2])->find();
    dump($dbRes);   //Db返回的是数组

    //使用模型的
    $modelRes = $this->where(['id'=>1])->find();    //模型返回的是对象
    return $modelRes->toArray();    //只有数据集对象,才可以转成数组(前提是要改数据库配置文件)
}


//【关联模型】方法名的定义规则,一般是模型名
public function userInfo(){
    /*
     * user a表。
     * user_infob表,通过user_id字段和a表的id做外键关联。
     * 1个参数是b表模型名,第2个参数是b表的外键,第3个参数是a表的主键
     * */
    //return $this->hasOne('UserInfo','user_id','id');    //【一对一】
    return $this->hasMany('UserInfo','user_id','id')->field('email');    //【一对多】
}


(9)学习tp5之模型

(9)学习tp5之模型

(9)学习tp5之模型