首页 > 解决方案 > laravel(5.5) 集合的保存方法没有结果

问题描述

我试图在处理它们后保存几行,但是在检查数据库中记录的任何数据时

我的用户表包含格式为“yegftwr”和“BOL234”的代码列,我需要将所有格式为“yegftwr”的代码转换为“BOLxxx”,其中 xxx 是增量数字

我的代码首先获取所有代码,然后查找分隔字符串“BOL”的最高数字 xxx(第一个循环)

然后查找“yegftwr”格式代码的前三个字符,将它们转换为大写字母,并将它们与转换为大写字母的“Bolivia”的前三个字符进行比较,如果它们不同,则将代码“yegftwr”转换为“ BOLxxx”格式,xxx为递增数(第二次循环)

这是我的代码:

  use App\User;
  use DB;

  public function handle()
{
    $tmp=User::select('codigo')->where('pais','Bolivia')->orderBy('codigo', 'asc')->get();
    $abc=strtoupper(substr('Bolivia', 0, 3));        
    foreach ($tmp as $cod)
    {
      if (strtoupper(substr($cod->codigo, 0, 3))==strtoupper(substr('Bolivia', 0, 3)))
      {
        $num=substr($cod->codigo, 3, 6);
      }
    }
      var_dump((int)$num);
      var_dump($abc.(string)(((int)$num)+1));
    foreach ($tmp as $cod)
    {
      if (strtoupper(substr($cod->codigo, 0, 3))!=strtoupper(substr('Bolivia', 0, 3)))
      {
        var_dump($cod->codigo);
        $num=(((int)$num)+1);
        $cod->codigo=$abc.(string)$num;
        $cod->save();
        var_dump($cod->codigo);
        var_dump("------------------------");
      }
    }

}

在测试中我没有收到任何错误,但数据库中没有记录

这是在终端中执行脚本后在终端中的输出

...
string(6) "ZtzBqO"
string(6) "BOL812"
string(24) "------------------------"
string(6) "zVuhyP"
string(6) "BOL813"
string(24) "------------------------"
...

但没有数据存储在数据库中

标签: phplaravellaravel-5eloquent

解决方案


您正在获取“pais”为“Bolivia”的数据。结果将显示所有带有 Boliva 的数据。在第二个 foreach 循环中,您正在检查 $cod->codigo 不等于 'Bolivia'。检查你的第二个 if 条件,这应该等于还是不等于


推荐阅读