thinkphp8 curd示例

数据表结构

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`phone` varchar(255) DEFAULT NULL,
`sortid` varchar(255) DEFAULT NULL COMMENT '地区id',
`website` varchar(255) DEFAULT NULL COMMENT '网站id',
`number` int(11) DEFAULT NULL COMMENT '群id',
`times` varchar(255) DEFAULT NULL COMMENT '进群时间',
`isdel` int(11) DEFAULT '1',
`wzmc` int(255) DEFAULT NULL COMMENT '网站id',
`sortpath` varchar(255) DEFAULT NULL COMMENT '路径',
`status` tinyint(4) DEFAULT NULL COMMENT '状态值',
`category` varchar(20) DEFAULT NULL COMMENT '类别',
`grade` varchar(20) DEFAULT NULL COMMENT '等级',
`area` int(11) DEFAULT NULL COMMENT '地区',

Index控制器

<?php
namespace app\controller;

use app\BaseController;
use think\facade\Db;
use app\controller\UserModel;

class Index extends BaseController
{
}

public function add()
    {
        /*$data = [
                'phone' => time(),
                'sortid' => time(),
                'website' => time(),
                'number' => time(),
                'times' => time(),
                'isdel' => time(),
                 'wzmc' => time(),
                'sortpath' => time(),
                'status' => mt_rand(0,2),
                'category' => time(),
                'grade' => time(),
        ];*/
        // Db::name('user')->insert($data); //常规插入
        // echo  $id = Db::name('user')->insertGetId($data);  //在插入数据的基础上返回 插入后的主键id



        /*$data = [
                'phone' => time(),
                'sortid' => time(),
                'website' => time(),
                'number' => time(),
                'times' => time(),
                'isdel' => time(),
                 'wzmc' => time(),
                'sortpath' => time(),
                'status' => mt_rand(0,2),
                'category' => time(),
                'grade' => time(),
                'area' => time(),
                'pppp' => '这是不存在的字段'  //这是数据表中不存在的ppp字段
        ];*/
        // Db::name('user')->strict(false)->insert($data);  //使用strict方法将关闭字段严格检查,不存在的字段将不会对数据库进行操作,实现正常插入






        /*$data = [
                'phone' => '要被替换',
                'sortid' => '要被替换',
                'website' => '要被替换',
                'number' => mt_rand(1,100),
                'times' => '要被替换',
                'isdel' => mt_rand(0,1),
                 'wzmc' => mt_rand(1000,1000000),
                'sortpath' => '要被替换',
                'status' => mt_rand(0,1),
                'category' => '要被替换',
                'grade' => '要被替换',
                'area' => mt_rand(0,1),
                'id' => 1
        ];*/
        /*
            replace方法用于配合insert或者下面的insertAll一起配套使用
            当不传入主键时,自然插入数据
            当传入主键时,replace将根据主键去查找该记录
                    找到时:将对数据进行所整行(有字段)更新;当有未传入某个字段的值时,该字段值将被更新未NULL;这一点和update区别是update可以单个字段更新,不影响整行
                    未找到时:自然插入数据

        */
        // Db::name('user')->replace()->insert($data); 





        $data = [
            [
            'phone' => '要被替换',
                'sortid' => '要被替换',
                'website' => '要被替换',
                'number' => mt_rand(1,100),
                'times' => '要被替换',
                'isdel' => mt_rand(0,1),
                 'wzmc' => mt_rand(1000,1000000),
                'sortpath' => '要被替换',
                'status' => mt_rand(0,1),
                'category' => '要被替换',
                'grade' => '要被替换',
                'area' => mt_rand(0,1),
            ],
            [
            'phone' => '要被替换',
                'sortid' => '要被替换',
                'website' => '要被替换',
                'number' => mt_rand(1,100),
                'times' => '要被替换',
                'isdel' => mt_rand(0,1),
                 'wzmc' => mt_rand(1000,1000000),
                'sortpath' => '要被替换',
                'status' => mt_rand(0,1),
                'category' => '要被替换',
                'grade' => '要被替换',
                'area' => mt_rand(0,1),
            ],
        ];
        Db::name('user')->insertAll($data); //批量插入
    }

public function del()
{    
        // $id = 2;
        // Db::name('user')->delete($id); //简洁方式 根据单个主键删除单条数据
        // Db::name('user')->where('id',$id)->delete(); //常规方式 根据单个主键删除单条数据

        $ids = [644163, 644164 , 644165]; 
        Db::name('user')->delete($ids); //根据多个主键删除多条数据
        Db::name('user')->whereIn('id',$ids)->delete($ids); //常规方式 根据多个主键删除多条数据
}

public function edit()
    {
          $data = [
            'website' => time(),
            'number' => time(),
            'times' => time(),
            'isdel' => time(),
            'wzmc' => time(),
            'sortpath' => time(),
            'status' => mt_rand(0,2),
            'category' => time(),
            'grade' => time(),
            'area' => time(),
            'id' => '644169'
        ];
        // Db::name('user')->update($data); // 简洁方式  带主键id进行更新

        // Db::name('user')->where('id',$data['id'])->update($data); //条件判断 进行更新

        Db::name('user')->inc('phone',106)->dec('sortid',300)->update($data);  //在更新的基础上,对其余额外的字段进行数值的加减运算;每次更新将对phone字段进行累加106,对sortid字段进行累减300
    }

public function select()
    {
        // $user = Db::table('tp_user')->select();  //查多条
        // $user5 = Db::table('tp_user')->where('id','In',[57,58,59,60])->select(); //查符合条件的多条
        // $user2 = Db::table('tp_user')->where('id',60)->value('website'); //查某条数据的单个字段
        // $user3 = Db::table('tp_user')->where('id',60)->find(); //查单条
        // $user4 = Db::table('tp_user')->find(60); //简洁方式  传入主键查单条
        // var_dump($user,$user2,$user3,$user4,$user5);



        /*
            将数据库大量的数据分批查询,根据 字段create_time 进行倒叙查询,每次查询2条,每次可以处理两条
            适用于命令行操作批处理数据库的数据,不适合WEB(浏览器)访问处理大量数据,例如可以在命令行下每次更新1000个人的积分记录
        */
        /*$handleCount = 2;
        Db::table('tp_user')->chunk(2, function($users) {
            foreach ($users as $user) {
                dump($user['id']);
                // 这里可以做一些逻辑操作,例如更新数据
            }
            echo '-----本次查询与下次查询的的分隔符-----';
        },'create_time','desc');*/



        /*
            游标查询
            利用了PHP的生成器特性,可以减少大量数据查询的内存开销问题
            解决了查询大量数据一次性加载到内存被撑爆的问题
            但依旧不能解决大量数据处理超时问题
        */
        // $user= Db::table('tp_user')->cursor();
        // dump($user);
        // foreach ($user as $key => $value) {
        //     dump($value['wzmc']);
        // }




        
        $res3 = Db::name('user')->field('id')->select(); //只查询id列字段
        /*
            字段排除
            查询数据表中除了id列字段外的所有字段值
            在thinkphp6以下版本时;写法是:Db::name('user')->field('id',true)->select(); 
        */
        $res4 = Db::name('user')->withoutField('id')->select(); 
        dd($res3,$res4);
    }
posted @ 2023-11-29 15:02  Anbin啊  阅读(111)  评论(0)    收藏  举报