为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
快速入门ThinkPHP 5.0 --模型篇_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

快速入门ThinkPHP 5.0 --模型篇

乌云龙 PHP开发工程师
难度中级
时长 3小时 0分
  • 模型聚合操作:

    count/sum/max/min/avg,用法均一样

    <?php
    namespace app\index\controller;
    use think\Controller;
    use app\index\model\User;
    class Index extends Controller
    {
        public function index(){
            #count获取表中数据的条数
    //            $res = User::count();
            #给count加where条件
    //        $res = User::where('id','>',5)
    //            ->where('id','<',10)
    //            ->count();
    
            #max/min获取指定字段中数据的最大/小值
    //        $res = User::max('id');
            #给max/min添加where条件
    //        $res = User::where('id',"<",9)->count('id');
    
            #sum对指定字段数据求和
    //        $res = User::sum('id');
            #对sum添加where条件
    //        $res = User::where('id','<',8)->sum('id');
    
            #avg对指定字段数据求平均值
    //        $res = User::avg('id');
            #对avg添加where条件
            $res = User::where('id','<',8)->avg('id');
                dump($res);
        }
    }


    查看全部
    0 采集 收起 来源:模型聚合操作

    2018-05-08

  • 使用MODEL对象对数据进行删除:

    <?php
    namespace app\index\controller;
    use think\Controller;
    use app\index\model\User;
    class Index extends Controller
    {
        public function index(){
            #destroy返回影响行数
    //        $res = User::destroy(function ($query){
    //           $query->where('id','<',5)
    //               ->whereOr('id','>',10) ;
    //        });
    //        dump($res);
    
            #get返回影响行数
    //        $userModel = User::get(7);
    //        $res = $userModel->delete();
    //        dump($res);
    
            #delete,返回影响行数
            $res = User::where('id',10)->delete();
            dump($res);
        }
    }


    查看全部
  • 使用模型更新表数据:

    <?php
    namespace app\index\controller;
    use think\Controller;
    use app\index\model\User;
    class Index extends Controller
    {
        public function index(){
            #当数据中存在自增id时,数据更新方式,返回修改的内容,无法验证是否更改
    //        $res = User::update([
    //            'id' => 1,
    //            'username' => 'wenco_update'
    //        ]);
    //        dump($res->toArray());
    
            #当数据中不存在自增id时如下,第二个参数即为where,可以为闭包函数,返回修改内容
    //                $res = User::update([
    //            'username' => 'wenco_update'
    //  当第二个参数为数组      ],['id' => '2']);
    //当第二个参数为闭包函数        ],function ($query){
    //                    $query->where('id','>=', 15);
    //                });
    
            #where 返回被影响行数,推荐使用!
    //        $res = User::where('id','between',[1,5])->update([
    //            'username' => 'wenco_old'
    //        ]);
    //        dump($res);
    
            #User::get,返回被影响行数
    //        $userModel = User::get(1);
    //        $userModel->username = '123';
    //        $userModel->email = '123@qq.com';
    //        $res = $userModel->save();
    //        dump($res);
    
            #new User,返回影响行数,第二个参数可以为闭包函数
    //        $userModel = new User;
    //        $res = $userModel->save([
    //            'username' => 555
    //        ],['id' =>  18]);
    //        dump($res);
    
            #saveAll,返回结果集,不推荐使用
            $userModel = new User;
            $res = $userModel->saveAll([
                ['id' => 1,'username' => 'wencocococ' ],
                ['id' => 2,'username' => 'wencocococ' ]
            ]);
            dump($res);
        }
    }


    查看全部
  • 向数据库中添加数据:

    <?php
    namespace app\index\controller;
    use think\controller;
    use app\index\model\User;
    
    class Index
    {
        public function index()
        {
            #user::create(),当第二个参数不为数组而是true时会自动过滤掉表中没有的字段的数据,第二个参数为字段数组,表示只允许在这两个字段内添加数据
    //        User::create([
    //            'username'  =>  'wenco_1',
    //            'password'  =>  md5('wenco_1'),
    //            'email'     =>  'wenco_1@qq.com',
    //            'num'       =>  100,
    //            'demo'      =>  123
    //        ],['username','email']);
    
    //        $userModel = new User;
    //        $userModel->username = 'wenco_2';
    //        $userModel->password = md5('wenco_2');
    //        $userModel->save();
    //        dump($userModel->id);
    
            #直接使用save(),返回被影响行数,allowField()与上面create的第二个参数功能及用法一样
    //        $userModel = new User;
    //        $res = $userModel->allowField(true)->save([
    //            'username'    =>  "wenco_5",
    //            'password'   =>  md5('wenco_5'),
    //            'email'      =>   'wenco_5@qq.com'
    //        ]);
    
            #使用saveAll同时传递多条数据
            $userModel = new User;
            $res = $userModel->allowField(true)->saveAll([
                ['email' => 'wenco_8@qq.com'],
                ['email' => 'wenco_9@qq.com'],
                ['email' => 'wenco_10@qq.com']
            ]);
            foreach ($res as $val){
                dump($val-> toArray());
            }
            }
    }


    查看全部
  • 模型获取数据库数据:

    <?php
    namespace app\index\controller;
    use think\controller;
    use app\index\model\User;
    
    class Index
    {
        public function index(){
            #通过get方式获取数据,括号内可以为主键,也可以为闭包函数
    //        $res = User::get(function($query){
    //            $query->where("username","eq","wenco_3")
    //            ->field("email");
    //        });
    
    //        $res = User::where("id","<=",15)
    //            ->field("id,username")
    //            ->limit(19)
    //            ->order("id"  ,"DESC")
    //            ->select();
    
            #user::all()
    //        $res = User::all(function($query){
    //            $query->where("id","<","5")
    //                ->field("id","username");
    //        });
            #column()第二个参数为新生成的数组的下标
            $res = User::column("email","username");
    
    //        foreach($res as $val){
    //            dump($val->toArray());
    //        }
    
            //$res = $res->toArray();//将结果转换成数组
            dump($res);
        }
    }


    查看全部
  • 首先创建一个Use模型,要继承think下的Model:

    <?php
    namespace app\index\model;
    use think\Model;
    class User extends Model{
    }

    然后在控制器中引用:

    <?php
    namespace app\index\controller;
    use think\controller;
    use app\index\model\User;
    
    class Index
    {
        public function index(){
            #new对象
    //        $user = new User;
    //        $res = $user::get(5);
    
            #$user = loader::model():需要use think下的Loader //use think\Loader;
    //        $res = Loader::model("User");
    //        $res = User::get(2);
    
            #助手函数model()
    //        $user = model("User");
    //        $res = $user::get(4);
    
            $res = $res->toArray();//将结果转换成数组
            dump($res);
        }
    }


    查看全部
    1 采集 收起 来源:什么是模型

    2018-05-07

  • 链式操作:

    <?php
    namespace app\index\controller;
    use think\controller;
    use think\Db;
    class Index
    {
        public function index(){
            $db = Db::name('user');
    //        $data = [];
    //        for ($i=1; $i<21; $i++){
    //            $data[] = [
    //                'username' => "wenco_{$i}",
    //                'password' => md5("wenco_{$i}"),
    //                'email'    => "wenco_{$i}@qq.com",
    //                'num'      => $i+100
    //            ];
    //        }
    //        $res = $db->insertALL($data);
            $res =Db::table('imooc_user')
                ->field("username","id","group")
                ->order('id',DESC)
                ->limit(3,5)//limit分页limit((m-1)*n,n)===  m:当前页数,n:每页多少条数据
                ->page(2,5)
                ->group("'group'")
                ->select();
            dump($res);
        }
    }


    查看全部
    0 采集 收起 来源:链式操作

    2018-05-07

  • 条件构造:

    <?php
    namespace app\index\controller;
    use think\controller;
    use think\Db;
    class Index
    {
        public function index(){
              $db = Db::name('user');
    
              #buildSql:返回sql语句
              #不区分大小写
              #EQ   =
              #NEQ  <>
              #LT   <
              #ELT   <=
              #GT   >
              #EGT   >=
              #BETWEEN   BETWEEN * AND *
              #NOTBETWEEN    NOTBETWEEN * AND *
              #IN   IN (*,*)
              #NOTIN   NOT IN(*,*)
    
              #连续使用where方法构成and where条件,
    //            $sql = $db->where('id','BETWEEN' ,'1,5')->buildSql();
                $sql = $db
                    ->where('id','exp' ,'not in(1,2,3)')
                    ->where('username','eq', 'wenco_1')
                    ->buildSql();
    
              #where与whereOr 构成or的关系
                $sql = $db
                    ->where('id','exp' ,'not in(1,2,3)')
                    ->whereOr('username','eq', 'wenco_1')
                    ->buildSql();
    
              dump($sql);
        }
    }


    查看全部
    0 采集 收起 来源:条件构造器

    2018-05-07

  • delete:

    <?php
    namespace app\index\controller;
    use think\controller;
    use think\Db;
    class Index
    {
        public function index(){
              $db = Db::name('user');
    
              #delete返回影响行数,当在deleted()中的参数为主键时可不加where条件
              $res = $db->delete(2);
              dump($res);
        }
    }


    查看全部
  • 数据更新update/setField/setInc/setDec

    <?php
    namespace app\index\controller;
    use think\controller;
    use think\Db;
    class Index
    {
        public function index()
        {
              $db = Db::name('user');
    
    //      #update返回影响行数
    //        $res = $db->where(['id' => 1])->update(['username' => '1234567']);
    
            #setField,设置字段的值,返回被影响的数据的行数
    //        $res = $db->where(['id'=>3])->setField([
    //            'username' => '88888888',
    //            'email'    => '66666666'
    //        ]);
    
            #setInc返回影响行数,第一个参数为字段名,第二个数据为在原数据的基础上的/*自增数*/
            $res = $db->where(['id'=>'1'])->setInc('num',5);
            #setDec同setInc,只不过第二个参数为/*自减数*/
            $res = $db->where(['id'=>'1'])->setDec('num',5);
            dump($res);
        }
    
    }


    查看全部
  • 数据插入:insert /insertGetId/insertAll

    <?php
    namespace app\index\controller;
    use think\controller;
    use think\Db;
    class Index
    {
        public function index(){
            $db = Db::name('user');
    
            #insert 返回值为插入影响行数
    //        $res = $db->insert([
    //           'username'    => 'wenco',
    //            'email'      => 'wenco@qq.com',
    //            'password'   => md5('today')
    //        ]);
    
            #inset插入并且返回自增ID
    //        $res = $db->insertGetId([
    //           'username'    => 'wenco',
    //            'email'      => 'wenco@qq.com',
    //            'password'   => md5('today')
    //        ]);
    
            #insetALL,返回插入成功数
            $data = [];
            for ($i = 1; $i < 10;$i++){
                $data[] = ['username'    => "wenco_{$i}",
                'email'      => "wenco_{$i}@qq.com",
                'password'   => md5("today_{$i}")
                ];
            }
            $res = $db->insertAll($data);
            dump($res);
        }
    
    }


    查看全部
    0 采集 收起 来源:添加数据

    2018-05-07

  • thinkphp Db类提供的四个查找数据的方法;

    select /column /find/ value

    <?php
    namespace app\index\controller;
    use think\controller;
    use think\Db;
    class Index
    {
        public function index(){
    # 使用sql语句的方式查询数据库
    //        $res = Db::query("select * from imooc_user where id=?",[1]);
    
    # 返回修改影响的结果条数
    /*       $res = Db::execute("insert into imooc_user set username =?,password=?,email=?", [
               'imooc',
               md5('imooc'),
               'imooc@qq.com'
            ]);*/
    
    #返回一个二维数组,在不添加where条件下输出所有数据,如果结果不存在返回一个空数组
            /*$res = Db::table('imooc_user')-> where([
                'id' => "1"
            ])->select();*/
    #一维数组,返回该列下的所有值,如果存在第二个参数,那个以第二个参数的值作为数组的key值,如果结果不存在,返回一个空数组
            //$res = Db::table('imooc_user')->column('username','email');
    
    #find方法,返回一个一维数组,返回一条数据,如不添加where条件默认返回正序排列下id最小的那一条记录,如果结果不存在返回null
    /*        $res = Db::table('imooc_user')->where([
                'id' => "2"
            ])->find();*/
    
    #返回一条记录,某个字段的值,当结果不存在返回null
    //        $res = Db::table('imooc_user')->where(['id'=>'2'])->value('username');
    
    #用Db::name,相当于Db::table传递表前缀
    //        $res = Db::name('user')->select();
    
    #助手函数db,与db类不同的是助手函数每次调用都要进行实例化!
            $res = db('user')->select();
            dump($res);
        }
    
    }


    查看全部
  • 更新数据,并且获取更新数据是否成功,

    一般不建议使用saveAll和静态方法,

    一般使用'where() -> updata()'

    或者使用'save() -> where()' 

    或者 'save([],function(){})'


    查看全部
  • 修改数据库配置方式

    1.可在config下的database.php返回配置信息,直接 DB::connect()

    2.在方法里面引入 use think\db;DB::connect(array);数组即数据库连接配置

    3.同样是DB::connect("mysql://root:password@127.0.0.1:3306:/databasename#utf8");//use think\Db 

    4.在配置文件中,添加一个数组,DB::connect("数组键名");//use think\Db

    查看全部
  • db  每次都会实例化

    查看全部

举报

0/150
提交
取消
课程须知
1、有一定的php基础。 2、对ThinkPHP5 有一定的了解。 3、没有接触过tp5 的学生可以先看下我之前录制的 <快速入门 ThinkPHP5 基础篇>
老师告诉你能学到什么?
1、ThinkPHP5 的数据库操作类 2、ThinkPHP5 的数据模型 3、使用数据模型快速对数据库进行增删改查的操作 4、ThinkPHP5 的自动完成操作 5、模型的自动时间戳和软删除
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!