tp6Day3--数据库的事务和获取器

47 阅读1分钟

事务处理

public function transaction()
{
    //自动处理自动回滚
    Db::transaction(function (){
        Db::name('user')->insert([
            'username'=>'小明',
            'email'=>'xiaoming@163.com',
            'password'=>'123456',
            'create_time'=>time()
        ]);
        Db::name('user')->insert([
            'username'=>'小ha',
            'email'=>'xiaoming@163.com',
            'password'=>'123456',
            'create_time'=>time()
        ]);
    });

    //手动处理手动回滚
    Db::startTrans();
    try {
        Db::name('user')->insert([
            'username'=>'小明',
            'email'=>'xiaoming@163.com',
            'password'=>'123456',
            'create_time'=>time()
        ]);
        Db::name('user')->insert([
            'username'=>'小ha',
            'email'=>'xiaoming@163.com',
            'password'=>'123456',
            'create_time'=>time()
        ]);
        Db::commit();
    }catch (\Exception $e){
        echo $e->getMessage();
        Db::rollback();
    }
}

获取器

//将数据的字段进行转换处理再进行操作;比如在获取数据列表的时候,将获取到的邮箱字段全部大写;

public function acquirer()
{
    $user = Db::name('user')->withAttr('email', function ($value, $data) 
    { return strtoupper($value); })->select();
    return json($user);
}

数据集

public function dataSet()
{
    //获取数据集
    $user = Db::name('user')->select();
    //转换成数组
    dump($user->toArray());
    //将数据集随机打乱
    dump($user->shuffle());
    //删掉数据中最后一个元素
    $user->pop();
    //使用whereIn查询结果集
    dump($user->whereIn('id',[19,20,21]));
}