今天在使用 laravel 10 的模型查询遇到一个问题?想请教下是什么原因。
$orderRefund = OrderRefund::query()
->where('order_no', $orderNo)
->where('refund_status', RefundStatusEnum::PROCESSING)
->first();
dump($orderRefund);exit();
上面这个查询结果打印为 nullorder_no
数据库字段类型为 bigintrefund_status
数据库字段类型为 tinyint
然后使用打印出来的sql 语句去出数据库查询是能查出数据的
$orderRefundSql = OrderRefund::query()
->where('order_no', $orderNo)
->where('refund_status', RefundStatusEnum::PROCESSING)
->toRawSql();
dump($orderRefundSql);exit();
select * from `order_refunds` where `order_no` = '64795467258662912' and `refund_status` = 0
拿这个 sql 语句去查询是有结果集的。
但是下面这个写法又能查询出数据,就是将 $orderNo
转化为int 类型
$orderRefund = OrderRefund::query()
->where('order_no', (int)$orderNo)
->where('refund_status', RefundStatusEnum::PROCESSING)
->first();
dump($orderRefund);exit();
就是想想知道产生这个问题的原因时什么。
$orderRefund = OrderRefund::query()
->where('order_no', $orderNo)
->first();
$orderRefund = OrderRefund::query()
->whereRaw("order_no = ?", [$orderNo])
->where('refund_status', RefundStatusEnum::PROCESSING)
->first();
这2中写法都是能正常查出数据的
推荐文章: