首页 > 解决方案 > 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";

标签: phpmysqlsqllaravel

解决方案


如果proformnumber存储为字符串而不是数字,则会发生这种情况。您可以通过转换获得数值最大值。我认为 MySQL 中最简单的方法是通过添加来使用隐式转换0

MAX(proformnumber + 0)

让这成为选择正确数据类型的一个教训。


推荐阅读