在使用让人又爱又恨的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);
}
今天就分享到这里希望可以帮助到遇到类似问题的小伙伴们。个人还是建议大家使用自己熟悉的一个使用,否则可能会出现意料之外的小惊喜。