为了账号安全,请及时绑定邮箱和手机立即绑定

快速入门ThinkPHP 5.0 --模型篇

难度中级
时长 3小时 0分
学习人数
综合评分9.67
70人评价 查看评价
10.0 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • #使用sql语句的方式查询数据库

    // $res = Db::query("select * from user where id=?",[5]);

    #插入语句

    // $res = Db::execute("insert into user set password=?,username=?,name=?,age=?",[

    // md5('password'),

    // 'bhfhgvbv',

    // 'love',

    // '22'

    // ]);

    #select 返回所有记录 返回的结果是一个二维数组

    // $res = Db::table('user')->select();

    #如果结果不存在 返回一个空数组

    // $res = Db::table('user')->where([

    //   'id'  => '100'

    // ])->select();


    #find 返回一条记录 返回的结果是一个一维数组

    #如果结果不存在 返回一个空数组

    // $res = Db::table('user')->find();


    #value 返回一条记录 并且是这条记录的某个字段值

    #如果结果不存在 返回NULL

    //   $res = Db::table('user')->value('name');


    #column 返回一个一维数组,数组中的value值就是我们要获取的列的值

    #如果存在第二个参数 就返回这个数组并且用第二个参数作为数组的key值

    #如果结果不存在 返回一个空数组

    // $res = Db::table('user')->column('name','username');

    // $res = Db::name('user')->select();

    $res = db('user',[],false)->find();

    dump($res);


    查看全部
  • 数据库的链接

    #第一种方式

    dump(config('database'));

    $res=Db::connect([

    'type'            => 'mysql',

    // 服务器地址

    'hostname'        => '127.0.0.1',

    // 数据库名

    'database'        => 'test',

    // 数据库用户名

    'username'        => 'root',

    // 数据库密码

    'password'        => 'root_pw',

    // 数据库连接端口

    'hostport'        => '',

    // 数据库编码默认采用utf8

    'charset'         => 'utf8',

    // 数据库表前缀

    'prefix'          => '',

    ]);

    dump($res);


    #第二种方式

    $res = Db::connect("mysql://root_xn:root@127.0.0.1:3306/course#utf8");

    dump($res);

    #第三种方式

    $res=Db::connect('db_config01');

    dump($res);


    查看全部
  • Db类查询的操作

    查看全部
  • 全局添加更新时间需要在表中新建create_time和update_time字段,配置文件中设置“auto_timestamp"=>true,一般不开启这个功能,否则表中不存在该字段时会报错,真正删除需要把destroy方法或delete方法的第二个参数设置为true

    use think\Model;
    use traits\model\SoftDelete;
    class User extends Model{    
    use SoftDelete;使用软删除    
    protected $autoWriteTimestamp = true;//开启自动更新时间    
    protected $createTime = false;//设置为false代表不使用创建时间    
    protected $updateTime = "update_at";//设置自定义更新时间的字段    
    protected $deleteTime = "delete_at";//设置自定义的软删除字段}


    https://img1.sycdn.imooc.com//5cb04a91000145e513860761.jpg

    https://img1.sycdn.imooc.com//5cb04ae90001063a13880759.jpg

    https://img1.sycdn.imooc.com//5cb04b1600019beb13910758.jpg

    查看全部
  • set+字段名+Attribute

    https://img1.sycdn.imooc.com//5caffb130001594f13920759.jpg

    https://img1.sycdn.imooc.com//5caffaee000101a813980820.jpg

    auto (新增及更新的时候自动完成的属性数组)

    insert(仅新增的时候自动完成的属性数组)

    update(仅更新的时候自动完成的属性数组)

    查看全部
  • 可利用toArray获取改后数据
    可利用getData获取原始数据

    https://img1.sycdn.imooc.com//5caff68c00014b6513980761.jpghttps://img1.sycdn.imooc.com//5caff6cf000141e213980769.jpg

    查看全部
    1 采集 收起 来源:模型获取器

    2019-04-12

  • count     User::count();   获取数据总条数     

     max       User::max('字段名')   获取指定字段值的最大值

     sum       User::sum('字段名')   获取指定字段值的总和

     avg       User::avg('字段名')   获取指定字段值的平均值 

    min       User::min('字段名') 获取指定字段值的最小值 

    都可以和where条件合作

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

    2019-04-12

  • <?php    
    namespace app\index\controller;    
    use think\Controller;    
    use app\index\model\User;    
    class index extends Controller{        
    public function index(){            
    $res = User::destroy(function($query){                
    $query->where('id','>',5);            });//可以传ID值或者闭包函数作为条件            
    dump($res);            
    $userModel = User::get(7);            
    $userModel->delete();           
    $res = User::where("1=1") ->delete();            
    dump($res);        
    }   
     }


    查看全部
  • tp里面更新数据的两种方式

    1.

    $model::where(array('字段'=>'值'))->update(array($change)); 

    或者如图所示;

    5be144600001119719201080-156-88.jpg

    <?php    
    namespace app\index\controller;    
    use think\Controller;    
    use app\index\model\User;    
    class Index extends Controller{        
    $data = [];        
    for($i=1;$i<21;$i++){
    $data[] = [
    'username'=>'zhangsan_'.$i,
    'password'=>md5('sdfa'._$i),                
    'age'=>$i];            
    $userModel = new User;            
    $userModel->saveAll($data);            
    dump($res);            
    $res = User::update([
    'username'=>'wangba',
    'age'=>15,               
    'id'=>15],function($query){                
    $query->where('id','LT',5);});//如果第一个参数不包含条件ID,第二个参数应该设置ID值或指闭包函数为更新条件            
    dump($res);            
    $res = User::where('id','<',6)->update([                  
    'username'=>'hehe']);            
    $userModel = User::get(1);            
    $userModel->username = "123";            
    $userModel->age = 110;            
    $usermodel = new User;            
    $res = $userModel->save(['username'=>'huhu'],function($query){                
    $query->where("id","<","5");});            
    $res = $usermodel->saveAll([['id'=>1,'username'=>'jingyao'],                
    ['id'=>2,'username'=>'lihong']            
    ]);        
    }   
     }
    查看全部
  • create([],true)自动排除数据库中不存在的字段,,true可为数组,设置为可允许字段的字段名

    $userModel=new User;

    $userModel->allowfield()->save()    另一种新增字段方式;

    create 添加一条数据,有两个参数,第一个为数组,要插入的字段和值,第二个参数为true时自动过滤不存在字段, 或者是以数组形式写入要添加的字段,返回值为对象;

    save 添加一条数据,两种书写方法,用allowField(true)来过滤不存在字段,也可以填写以数组的形式添加要添加的字段,返回值为受影响的行数;

    saveAll(二维数组) 添加多条数据,返回值为二维数组,value值为对象

    <?php    
    namespace app\index\controller;    
    use think\Controller;    
    use app\index\model\User;    
    class Index extends Controller{        
    public function index(){            
    $user = User::create([ 'username'=>'zhangsan', 'password'=>md5(123456),                'age'=>13            ],['username','age']);//第二个参数设置为true则只插入数据表中存在的字段,数组是允许插入的字段,不设置插入不存在的字段的时候会报错           
    dump($res->id);//返回插入的ID            
    $userModel = new User;            
    $userModel->username = "lisi";            
    $userModel->password = md5('sdfa');            
    $userModel->save();            
    dump($userModel->id);            
    $userModel = new User;            
    $res = $userModel->allowField(['username'])->save(["username"=>'wangba','password'=>md5('sdfs'), 
    'demo'=>123]);           
    $res = $userModel->saveAll([ ['age'=>17],['age'=>18]]);           
    foreach($res as $val){$arr = $val->toArray();                
    dump($arr);    
     }      
       }   
    }


    查看全部
  • 使用User::get(function($query)){$query->where()->field()}查询

    User::where()->field()->find()查询某一条  返回对象

    User::all(function($query){}获取多条记录,使用主键   返回对象

    User::where()->field()->limit()->order()->select();多条查询    返回对象

    User::where()->value()按字段查询一条   返回的是数组

    User::where()->column("email","username")以username为键的数组

    代码:

    <?php    

    namespace app\index\controller;    

    use think\Controller;    

    use app\index\controller\User;    

    class index extends Controller{        

    $res = User::get(function($query){            

    $query->where("username","eq","zhangsan")                  ->filed("username,email");        

    });        

    $res = User::where("id",12)->field("id,username")->find();         

    $res = User::all(function($query){             

    $query->where("id","<","15")                   ->select();         

    });         

    $res = User::where('id','>',"15")              

    ->field("username,email")->limit(3)->order('id DESC')->select();         

    foreach($res as $val){             

    $res->toArray();             

    dump($val->toArray());        

     }         

    $res = User::value('email');         

    $res = User::where('id','10')->value('email');         

    $res = User::column("email","username");         

    dump($res);  

     }



    查看全部
  • Model的使用方法


    use app\模块\model\模型类名


    1、$res = 模型类名::get(1);

    2、$user = new 模型类名;

       $res = $user::get(1);


    3、使用Loader

       use think\Loader;

       $user = Loader::model('模型类名');

       $res = $user::get(1);


    4、助手函数

       $user = model('模型类名');

       $res = $user::get(1);


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

    2019-04-10

  • 常用链式操作   

    原理:Db类的链式方法返回Db对象,可以继续使用Db对象的这些方法对查询数据进行一些条件构造以及范围的选择和排序等等;


    $res=$db

    ->where('id','>',5) 条件ID>5

    ->field('username','id') 只搜索username和id两个字段

    ->order('id DESC') order排序 id DESC   id倒序

    ->limit(3,7) limit截取  3,7   从3开始截取7个

    ->page(3,5) page(m,n)多用于分页//limit分页limit((m-1)*n,n)== m:当前页数,n:每页多少条数据

    ->group('`group`') //group是关键字,这里用``进行转义

    ->select(); select( );  搜索

    var_dump($res);


    注意:order对group是不起作用的;就是在执行的group进行分组的时候,并不是在你order排序的基础上进行的;

    group('字段'),他会根据字段的值为分类标准进行分类,比如字段值为1的单独查出来,字段值为1的单独查出来;


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

    2019-04-10

  • whereOr 判断条件

    e.g.:$sql=$db->where("id","in","1,2,3")->whereOr("username","eq","17771258")->buildSql();

    $sql=$db->where([

    'id'=>['in',[1,2,3]],

    'username'=>'17771258'

    ])->buildSql();

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

    2019-04-10

  • buildSql();返回SQL语句

    where('字段名','表达式','查询条件');

    表达式 含义

    EQ、=        等于(=) 

    NEQ、<>  不等于(<>) 

    GT、>        大于(>) 

    EGT、>=    大于等于(>=) 

    LT、<                    小于(<) 

    ELT、<=                小于等于(<=) 

    LIKE                      模糊查询 

    [NOT] BETWEEN (不在)区间查询 

    [NOT] IN            (不在)IN 查询( 'id','in' ,'1,5,8'( [1,5,8] ) )

    [NOT] NULL 查询字段是否(不)是NULL 

    [NOT] EXISTS EXISTS查询 

    EXP 表达式查询,支持SQL语法 

    > time 时间比较 

    < time 时间比较 

    between time 时间比较 

    notbetween time 时间比较 

    <!-- Db::table  -->

    Db::table('据库名')->where()->buildSql();

    <!-- Db::name 方法同上 -->

    Db::name('不戴前置数据库名')->where()->buildSql();


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

    2019-04-03

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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