where参数给的是int类型,为什么sql监控出来变成string类型?

DB::table('表名')
->where('docId',intval($docId))
->where('states',1)
->orderBy('id', 'desc') //发布日期
->skip(0)
->take(20)
->select('id','nickName')->get();
通过DB::getQueryLog()跟踪出来的查询语句:
[2015-06-08 21:10:39] production.INFO: [{"query":"select top 20 [id], [nickName] from [表名] where [docId] = ? and [states] = ? order by [id] desc","bindings":[145439,1],"time":243.35}] [] []

上面docId和states对应的值是int类型,但是sqlserver监视器查出来的确实string,如下:
select top 20 [id], [nickName] from [表名] where [docId] = '145439' and [states] = '1' order by [id] desc

这是查询语句直接导致不走索引,性能低啊。 请高手回答下我的疑问吧。
已邀请:

wuangv - you win

赞同来自: kwaiyboy

你可以使用 where(DB::raw('docid = 123')) 或者使用 whereRaw('states = 1') ,试一试吧, 我不知道能不能加快搜索速度,不过这两种写法 要注意用户输入安全过滤

kwaiyboy

赞同来自:

这个社区不给力啊,完全没人回复。

要回复问题请先登录注册