php - DB::raw('MAX 只给出从 1 到 9 的值
问题描述
这个函数只给出从 1 到 9 的值,我不知道为什么。我有数字从 1 到 10 的列形式编号,但这个函数给出 9。当我删除一些行时,它对于小于 10 的数字正常工作。
$autoyear = date('Y');
$automonth = date('m');
$autonumber = DB::table("proforms as proforms")
->select(\DB::raw('MAX(proformnumber) as proformnumber'))
->where('automonth', '=', $automonth)
->where('autoyear', '=', $autoyear)
->get();
这是其余的功能代码。我用它来计算形式编号
$autonumber[0]->proformnumber++;
$number = $autonumber[0]->proformnumber;
$number = "$number/$automonth/$autoyear/proforma";
解决方案
如果proformnumber
存储为字符串而不是数字,则会发生这种情况。您可以通过转换获得数值最大值。我认为 MySQL 中最简单的方法是通过添加来使用隐式转换0
。
MAX(proformnumber + 0)
让这成为选择正确数据类型的一个教训。
推荐阅读
- javascript - 反应导入外部javascript返回错误
- javascript - 如何在反应js中更新功能组件setState中整数数组的特定索引
- android - 将firestore插件添加到我的flutter应用程序时生成错误
- git - git子模块未推送到生产
- tsql - Querying Column Definition for Data Length - SQL Server
- python - 在 PHP 网页中显示 CGI 结果
- flutter - Flutter Callback with return error setState() or markNeedsBuild called during build
- mule - 超出最大属性大小限制 (65536)。骡软
- python - 如何使用 matplotlib 将两个 csv 文件添加到一个图中?
- java - android - 如何在适配器中正确设置 clickListener