laravel where 链式查询问题
这两天遇到一个奇怪的事情:
数据库字段deal_group_id类型为string,值为 54338292_bak
在下面的例子中
$dealGroupId = 54338292;
$record = ReceiptRecordDao::where('uid', $uid)->where('deal_group_id',$dealGroupId)->where('status', 1)->first();
if ($record) {
SyslogDao::info('receipt_prepare1_' . $receiptCode, $record->deal_group_id);
SyslogDao::info('receipt_prepare2_' . $receiptCode, $data['dealgroup_id']);
throw new \Exception('你已经兑换过此类团购券了,鸭毛都被薅光啦~');
}
这里就一直能catch到exception,百思不得其解。
解决过程:
- 尝试把数据库中的值改为 5433829288,就查询不到了,也不报错了。
- 尝试更改查询语句,把int型强制转化为string,问题解决了:
uid)->where('deal_group_id',“{$dealGroupId}”)->where('status', 1)->first();
不知道laravel框架搞了什么骚操作,在值为int型时,where链式查询会出现这样的问题。
第一次遇到,mark一下。