Laravel 5.1 Eloquent whereBetween不按预期工作

时间:2016-05-17 05:12:21

标签: php

我必须在传递符号no。

的范围内获取行

Image of Table from where query is to be done

查询:

Mark::select('users_id', 'symbol_no', 'mark_obtained')
        ->where('subject_trade_id', 2)
        ->whereBetween('symbol_no', [100, 1000])
        ->orderBy('symbol_no')
        ->get();

此查询不返回任何数据,但我希望查询总共有9行。 如果我转储查询,我会按预期找到查询。

Query Log Image

如果我将生成的查询运行到mysql,那么它就可以了。

再次,如果我更改符号否。范围是这样的:

Mark::select('users_id', 'symbol_no', 'mark_obtained')
        ->where('subject_trade_id', 2)
        ->whereBetween('symbol_no', [10, 1011])
        ->orderBy('symbol_no')
        ->get();

这次返回2行,这个输出也是错误的。

如果我尝试更改符号否。范围和查询如下:

Mark::select('users_id', 'symbol_no', 'mark_obtained')
        ->where('subject_trade_id', 2)
        ->whereBetween('symbol_no', [101, 200])
        ->orderBy('symbol_no')
        ->get();

现在它按预期正常工作。

2 个答案:

答案 0 :(得分:1)

发现问题

错误地,symbol_no列被定义为varchar(),它必须是int()所以,whereBetween()无法返回预期的数据。

答案 1 :(得分:0)

我遇到同样的问题..请你检查" symbol_no"数据库表中的字段类型,应为数字/整数。