Laravel 5.1 Eloquent whereBetween未按预期工作


Laravel 5.1 Eloquent whereBetween not working as expected

我必须在传递的符号编号范围内获取行。

进行查询的表格图像

查询:

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

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

查询日志图像

如果我将生成的查询运行到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();

现在,它运行良好,正如预期的那样。

发现问题

由于错误,symbol_no列被定义为varchar(),它必须是int(),因此Between()无法返回预期的数据。

我遇到了同样的问题。。请检查数据库表中的"symbol_no"字段类型,它应该是数字/整数。