我必须在传递的符号编号范围内获取行。
进行查询的表格图像
查询:
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"字段类型,它应该是数字/整数。