操作数据库


MiniFramework 内建有一套 SQL 语句构造方法供开发者调用,对于常用的增/删/改/查操作进行了的封装,简化了 SQL 语句编码过程。

重要提示:MiniFramework 从 2.11.0 版本开始,将原 Mini\Base\Model 类中的数据库操作方法全部迁移至新增的 Mini\Db\Query 查询构造类中。同时,为了确保使用 MiniFramework 的各位开发者升级到 2.11.0 版本后项目运行正常,在 Mini\Base\Model 类中,继承了 Mini\Db\Query 类,原有的方法均可正常调用,不受影响。(新增的 Mini\Db\Query 类也可独立调用。)

查询数据

查询数据需要用到 $this->select() 方法,支持传入字符串类型的参数 all(默认) 和 row,分别代表返回结果集数组或单个结果,示例代码如下:

namespace App\Model;

use Mini\Base\Model;

class User extends Model
{
    public function getUser()
    {
        // 使用 KEY 为 db1 的数据库实例
        $this->useDb('db1');

        // 查询 user 表的全部记录,返回结果集数组
        $list1 = $this->table('user')->select();

        // 查询 user 表中 id 为 1 和 3 的记录,返回结果集数组
        $list2 = $this->table('user')->where('id', [1, 3])->select();

        // 查询 user 表中 id=4 的记录,返回单行数据信息
        $info1 = $this->table('user')->where('id=4')->select('row');

        // do something...
    }
}

添加数据

将需要添加的数据数组通过 $this->data() 方法传入,然后用 $this->add() 方法完成添加,示例代码如下:

namespace App\Model;

use Mini\Base\Model;

class User extends Model
{
    public function addUser()
    {
        // 使用 KEY 为 db1 的数据库实例
        $this->useDb('db1');

        // 插入单条数据示例
        $data1 = ['id' => 1, 'name' => '张三'];
        $result1 = $this->table('user')->data($data1)->add();

        // 插入多条数据示例
        $data2 = [
            ['id' => 2, 'name' => '李四'],
            ['id' => 3, 'name' => '王五']
        ];
        $result2 = $this->table('user')->data($data2)->add();

        // do something...
    }
}

更新数据

将需要更新的数据数组通过 $this->data() 方法传入,然后通过 $this->save() 方法完成更新,示例代码如下:

namespace App\Model;

use Mini\Base\Model;

class User extends Model
{
    public function updateUser()
    {
        // 使用 KEY 为 db1 的数据库实例
        $this->useDb('db1');

        // 构造需要更新的数据
        $data1 = ['name' => '张三'];

        // 更新 id 为 1 的记录
        $result1 = $this->table('user')->data($data1)->where('id=1')->save();

        // 构造需要更新的数据
        $data2 = ['class' => '六年级三班'];

        // 更新全部记录(不指定 where 条件)
        $result1 = $this->table('user')->data($data2)->save();

        // do something...
    }
}

删除数据

删除数据会用到 $this->delete() 方法,当不指定 where 条件时,会删除表内全部数据,请谨慎使用。示例代码如下:

namespace App\Model;

use Mini\Base\Model;

class User extends Model
{
    public function delUser()
    {
        // 使用 KEY 为 db1 的数据库实例
        $this->useDb('db1');

        // 删除 id 为 1 的记录
        $result1 = $this->table('user')->where('id=1')->delete();

        // 删除全部记录(不指定 where 条件),请谨慎使用。
        $result2 = $this->table('user')->delete();

        // do something...
    }
}