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

快速入门ThinkPHP 5.0 --模型篇

难度中级
时长 3小时 0分
学习人数
综合评分9.67
70人评价 查看评价
10.0 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • setField更新也是返回影响数据的行数,

    与update不同的是setField每次只能更新一个字段


    查看全部
  • 成员方法(get字段名Attr)[字段名首字母大写]

    在model中使用   后面有代码

    在controller中use下model中的类(该类需继承model类)

    后利用各种查询方法获取数据值

    可利用toArray获取改后数据

    可利用getData获取改前数据

    public function get字段名tAttr($value)       
    {                
       /*($字段名 首字母不用大写)*/        
        $字段名 = [-1=>'***',0=>'***',1=>'***',2=>'***'];   
        return $字段名[$value];       
     }    
     public function get字段名Attr($val)    
     {                    
         switch($val){                            
             case '1':                                
             return "***";                                
             break;                            
             case '2':                                
             return "***";                                
             break;                
             case ~~:                     
             break;                            
             default:                                
             return "***";                                
             break;                        
         }            
     }


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

    2019-01-06

  • alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法等。

    bind方法用于手动参数绑定,大多数情况,无需进行手动绑定,系统会在查询和写入数据的时候自动使用参数绑定。

    cache可以用于select、find、value和column方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据,关于数据缓存的类型和设置可以参考缓存部分。

    comment方法 用于在生成的SQL语句中添加注释内容

    distinct 方法用于返回唯一不同的值 

    failException设置查询数据为空时是否需要抛出异常,如果不传入任何参数,默认为开启,用于select和find方法

    fetchSql用于直接返回SQL而不是执行查询,适用于任何的CURD操作方法

    force 方法用于数据集的强制索引操作

    group通常用于结合合计函数,根据一个或多个列对结果集进行分组 

    having用于配合group方法完成从分组的结果中筛选(通常是聚合条件)数据

    join用于根据两个或多个表中的列之间的关系,从这些表中查询数据

    join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。

    • INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行

    • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 

    • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 

    • FULL JOIN: 只要其中一个表中存在匹配,就返回行 

    limit主要用于指定查询和操作的数量,特别在分页查询的时候使用较多。ThinkPHP的limit方法可以兼容所有的数据库驱动类的。

    Lock方法是用于数据库的锁机制,如果在查询或者执行操作的时候使用:就会自动在生成的SQL语句最后加上 FOR UPDATE或者FOR UPDATE NOWAIT(Oracle数据库)

    order用于对操作的结果排序。

    page是完全为分页查询而诞生的一个人性化操作方法。显而易见的是,使用page方法你不需要计算每个分页数据的起始位置,page方法内部会自动计算

    partition 方法用于是数据库水平分表

    sequence方法用于pgsql数据库指定自增序列名,其它数据库不必使用

    strict方法用于设置是否严格检查字段名,如果开启字段严格检查的话,在更新和写入数据库的时候,一旦存在非数据表字段的值,则会抛出异常

    table方法主要用于指定操作的数据表。

    union操作用于合并两个或多个 SELECT 语句的结果集。


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

    2019-01-06

  • <!-- Db::name -->

    Db::name('不加前缀数据库名')->insert($一维数组) 返回值是影响记录的行数

    Db::name('不加前缀数据库名')->insertGetId($一维数组) 返回ID

    Db::name('不加前缀数据库名')->insertAll($二维数组)  返回成功插入行数

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

    Db::table('据库名')->insert($一维数组);

    或者用SQL语句插入Db::execute(SQL语句)

    二维数组[

           0 =>一维数组[key=>value]

                  ]

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

    2019-01-05

  • Db::table('数据库表名')->对象名        条件->where(key, value) 表名:查询值  不知能否添加条件判断,还是只能原生添加?

    • select ();返回所有记录 返回的结果是一个二维数组,不存在返回空数组

    • column(key, value) 返回列一维数组,key默认查询名,若存在第二个参数,则进行键值映射,value查询名,不存在返回空数组

    • find() 返回一条记录,返回的结果是一个一维数组,不存在返回NULL

    • value() 返回一条记录,并且是字条记录的某个字段值,结果不存在返回NULL


    Db::name('不需前缀的表名')    开发中一般使用这个  其余参数同上

    助手函数:db('不需前缀的表名')  功能同上,只是这种使用方法每次使用都需要实例化

    Db::content()  数据库连接(惰性连接)

    Db::query("SQL语句???", [value1, value2, value3]) 数据库语句(原生)

    Db::execute("SQL语句???", [value1, value2, value3]) 数据库插入语句,返回影响条数(原生)

    查看全部
  • use think\Db;

    $db = Db::name('table');

    $db->insert($data); //返回值是影响记录的行数 插入数

    $db->insertGetId($data); //返回插入数的自增id

    $db->insertAll($data); //返回插入的成功行数

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

    2018-11-05

  • // $res = User::create([ // 'username' => 'imooc', // 'password' => md5('imooc'), // 'email'    => 'imooc@qq.com', // 'num'      => 100, // 'demo'     => 123 // ], ['username', 'email']); // $userModel = new User; // $userModel->username = '17771258'; // $userModel->email = '17771258@qq.com'; // $userModel->password = md5('17771258'); // $userModel->save(); // $userModel = new User; // $res = $userModel // ->allowField('username') // ->save([ // 'username'  => 'imooc1', // 'password'  => md5('imooc1'), // 'demo'      => 123 // ]); $userModel = new User; $res = $userModel->saveAll([ ['email'=> '17771258@qq.com'], ['email'=> '17771259@qq.com'] ]); foreach($res as $val) { dump($val->toArray()); } //dump($res); //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);


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

    2018-11-05

  • 删除:

    delete(' ');函数 删除  没有条件是不会执行操作的

    #delete('') 返回影像记录的行数 加where()条件,或者delete(''主键的值);

    $res=$db->where(['id'=>2])->delete();

    $res=$db->delete(1);括号里是主键id的值;

    如果where("1=1")的话会删除所有记录(慎用)只要where每次接收到的是true就可以;就会全部删除

    $res=$db->where("1=1")->delete( );


    查看全部
  • Db::方法 因为是单例模式 不会重复实例化 而用db驻守函数会每次实例化,消耗内存,所以在后面加上false,这样db('表名',[],false)就不会每次实例化了

    查看全部
  • 全局添加更新时间需要在表中新建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";//设置自定义的软删除字段
    }


    查看全部
  • $sql = $db->where('id','exp','not in (1,2,3)')->bulidSql();


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

    2018-10-29

  • eq  =    neq <>    lt <    elt <=    gt >    egt >=    between  notbetween    in    not in

    $sql = $db->where("id",'lt','3')->buildSql();

    $sql = $db->where('id','between','3,4')->buildSql();

    $sql = $db->where('id','in',[1,2,3,41])->bulidSql();//in和between第三个参数可为数组或者字符串


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

    2018-10-29

  • #使用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']);

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

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

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

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

    #如果结果不存在返回NULL

    $res = Db::table('imooc_user')->where(['id'=>10])->find();

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

    #如果结果不存在 返回NULL

    $res = Db::table('imooc_user')->value('username');

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

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

    #如果不存在返回NULL

    $res = Db::table('imooc_user')->column('username');


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

    #如果结果不存在 返回NULL

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

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

    #如果结果不存在 返回NULL

    $res = Db::table('imooc_user')->value('username');

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

    实例化

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


    查看全部
  • $res = Db:table('imooc_user')

    -> where('id', '>', 10)

    -> field('username, id')

    -> order('id DESC')

    // -> LIMIT(3, 5)

    // -> page()

    -> group() //order不生效

    -> select();


    dump($req);


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

    2018-07-20

举报

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

微信扫码,参与3人拼团

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

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