laravel7.0踩坑 数据库查询链式写法,where查询时,string类型的字段,如果值为int,会出现问题

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,百思不得其解。

解决过程:

  1. 尝试把数据库中的值改为 5433829288,就查询不到了,也不报错了。
  2. 尝试更改查询语句,把int型强制转化为string,问题解决了:
    record = ReceiptRecordDao::where('uid',uid)->where('deal_group_id',“{$dealGroupId}”)->where('status', 1)->first();

不知道laravel框架搞了什么骚操作,在值为int型时,where链式查询会出现这样的问题。
第一次遇到,mark一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容