当前位置: 首页 > 工具软件 > TP-COUPON > 使用案例 >

tp6开发遇到的坑死人的小问题db model链式查询返回的结果类型问题

慕容成和
2023-12-01

在使用让人又爱又恨的thinkPHP6开发的过程中,真是无语了tp6 同一个查询方法返回的结果类型就是不一样。这坑真的是郁闷至极。
测试代码如下,还有测试的结果说明:

    // 测试tp数据库查询返回类型
    public function testTp()
    {
        // db()->find() 返回的结果是array
        // db()->select() 返回的结果object
        // $res = db('customer_account')->where('account_id',1)->select();
        // var_dump($res);

        // class::where()->find() 返回对象
        // class::where()->select() 返回对象
        // class::where()->findOrEmpty(); 返回对象
        // modelClass::where()->findOrFail() 返回对象 查询不到抛出错误
        // $res = \app\customerAdmin\model\CustomerAccount::where('account_id',100)->findOrFail();

        // 查询的时候table是表的全名 带着前缀字符 否则找不到数据表
        // find() 返回array 查不到 返回null
        // findOrEmpty() 返回数组、 查不到返回空数组
        // select() 返回对象object
        // findOrFail()  // 查询到数据 返回 array 、 查询不到返回的是致命错误
        // $res = Db::table('jsy_customer_account')->where('account_id',1)->findOrFail();
        // var_dump($res);die();


        // new model()->find() 返回对象。查不到返回 null
        // new model()->findOrEmpty() 返回对象object
        // new model()->findOrFail() 返回对象object 查不到返回 错误异常
        // select() 返回对象
        $accountModel = new \app\customerAdmin\model\CustomerAccount();
        $res = $accountModel->where('account_id',1)->select();
        var_dump($res);die();

    }

下面还分享一个tp6事务使用的一个小案例

Db::startTrans();
try {
    //写入任务表
    $taskID = CustomerTasks::insertGetId($taskData);

    $rechargeModel = new CustomerRecharge();
    $taskData['task_id'] = $taskID;
    $logId = $rechargeModel->addOne($taskData, 40);// 40 是余额付款

    $odModel = new OrderDriver();
    if (in_array($taskData['task_type'], [1, 2])) {
        // 开始拆分订单
        $odModel->makeManyOrder($taskData);
    } else {
        // 签约任务 处理业务逻辑 指派订单给雇主勾选的签约司机
        $result['status'] = 1004;
        $result['msg'] = '您不是签约客户';
        $result['data'] = [];
        return json($result);
//                  $odModel->outOrder($taskData, $params['driver_ids']);
    }

    if($taskData['coupon_id'] > 0) {
        $couponModel = new CustomerCoupons();
        $couponModel->usedOne($taskData);// 使用优惠券
    }
    Db::commit();
    $result['status'] = 200;
    $result['msg'] = '下单并支付成功';
    $result['data'] = [];
    return json($result, 200);
} catch (Exception $exception){
    Db::rollback();
    $result['status'] = 1009;
    $result['msg'] = $exception->getMessage();
    $result['data'] = [];
    return json($result, 200);
}

今天就分享到这里希望可以帮助到遇到类似问题的小伙伴们。个人还是建议大家使用自己熟悉的一个使用,否则可能会出现意料之外的小惊喜。

 类似资料: