thinkphp 操作mysql数据库 配置 新增 更新 删除

获取当前路由信息

    use app\BaseController; // 引入控制器

    public function index()
    {
        // 返回当前实际路径
        return $this->app->getAppPath();
        // 返回当前方法名
       //  return $this->request->action();
    }

载入的控制器不存在时

    public function __call(string $name, array $arguments)
    {
        return '控制器不存在' . $name;
    }

tp链接数据库, 在.env里配置

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

class User extends BaseController
{
    //APP_DEBUG = true

    //DB_TYPE = mysql
    //DB_HOST = 127.0.0.1
    //DB_NAME = demo
    //DB_USER = root
    //DB_PASS = root
    //DB_PORT = 3306
    //DB_CHARSET = utf8

    //DEFAULT_LANG = zh-cn

    use think\facade\Db;
    public function index() {
        // 查询所有数据
        // $user = Db::table('user')->select();
        // 查询满足条件的所有数据
        // $user = Db::table('user')->where('id', 1)->select();
        // 查询满足条件的一条数据
        // $user = Db::table('user')->where('id', 1)->find();
        // 如果没有数据, 正常情况下返回null, 这个语法返回空的数组
        // $user = Db::table('user')->where('id', 11)->findOrEmpty();
        // 如果没有数据抛出异常
        //$user = Db::table('user')->where('id', 11)->findOrFail();

        // 获取某一个数据的某个字段的值
        // $user = Db::name('user')->where('id', 1)->value('name');
        // 获取多个数据的多个字段的值 id作为索引 {"6":{"name":"张三","age":30,"id":6}}  不传id返回 [{"name":"张三","age":30,"id":6}]
        // $user = Db::name('user')->where('age', 30)->column('name, age', 'id');

        // Db::table('user')不会拼接表的前缀,name会拼接前缀
        $user = Db::name('user')->select();
        return json($user);
    }
}

批量处理

    public function index()
    {
        // 批量处理
        // $user = Db::name('user')->chunk(2, function($users) {
        //   foreach($users as $user) {
        //       echo $user['name'];
        //   }
        //});

        // 批量处理2
        $user = Db::name('user')->cursor();
        foreach($user as $u) {
            echo $u['name'];
        }
    }

向数据库新增数据

        $data = [
            [
                'name' => 'thinkphp',
                'age' => 159,
                'sex' => '男',
                'details' => '11',
            ],
            [
                'name' => 'thinkphp',
                'age' => 158,
                'sex' => '男',
                'details' => '11',
            ]
        ];

        // 向数据库新增单条数据 如添加的字段和数据库不符 会报错
        // $user = Db::name('user')->insert($data);
        // 向数据库新增单条数据 如添加的字段和数据库不符 会忽略错误的字段为null 不会添加进去
        // $user = Db::name('user')->strict(false)->insert($data);
        // 如果数据库是mysql 支持replace 如果主键已经存在 强制替换数据 并且忽略错误的字段
        // $user = Db::name('user')->replace()->strict(false)->insert($data);
        // 返回新增数据的id
        // $user = Db::name('user')->replace()->insertGetId($data);
        // 批量新增数据 也支持replace 如果单次的数据量很大 可以通过limit限制每次写入的数据量
         $user = Db::name('user')->replace()->limit(100)->insertAll($data);
        return $user;

更新数据库数据

        // 更新数据库数据
        // $data = [
        //    'name' => 'thinkphp333',
        // ];
        // $user = Db::name('user')->where('id', 1)->update($data);

        // 更新的数据如果包含主键 可以去掉where条件
        // $data = [
        //    'id' => 1,
        //    'name' => 'thinkphp',
        // ];
        // $user = Db::name('user')->update($data);

        // 对字段执行sql函数操作 exp()实现某一个字段英文字母大写
        // $data = [
        //     'id' => 1,
        //     'name' => 'thinkphp'
        // ];
        // $user = Db::name("user")->exp("details", "UPPER(details)")->update($data);

        // 保存数据 主键存在就是更新 不存在就是新增
        //  $data = [
        //     'name' => 'thinkphp222'
        //  ];
        // $user = Db::name("user")->save($data);

        // 自增自减 要有主键id inc是自增 dec是自减
        //  $data = [
        //      'id' => 1,
        //     'name' => 'thinkphp333'
        //  ];
        // $user = Db::name("user")->dec("age")->update($data);

        // 使用Db::raw() 来设置每个字段的特殊需求 灵活且清晰
        //  $data = [
        //      'id' => 1,
        //     'name' => 'thinkphp333'
        //  ];
        $user = Db::name("user")->where('id', 1)->update([
            'name' => Db::raw('UPPER(name)'),
            'age' => Db::raw('age+1'),
        ]);
        return $user;

删除数据

        // 默认是删除主键
        // $user = Db::name('user')->delete(1);

        // 默认是删除主键 删除多条数据
        // $user = Db::name('user')->delete([1,2]);

        // 条件删除
        $user = Db::name('user')->where('id', 3)->delete();
        return $user;

posted on 2024-01-17 22:19  完美前端  阅读(205)  评论(0)    收藏  举报

导航