php - 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) "------------------------"
...
但没有数据存储在数据库中
解决方案
您正在获取“pais”为“Bolivia”的数据。结果将显示所有带有 Boliva 的数据。在第二个 foreach 循环中,您正在检查 $cod->codigo 不等于 'Bolivia'。检查你的第二个 if 条件,这应该等于还是不等于
推荐阅读
- css - Chrome中的CSS边框:奇怪的灰线
- python-3.x - Python3,范围的 NameError
- terraform - 建立具有多个级别的地图列表
- javascript - Javascript 箭头功能无法按预期工作?
- java - Java 泛型:Java 中的问题类型参数推断
- python-3.x - Python - 跟踪输入
- user-tracking - UTM 无法在 Android 上运行,这是否发生在其他人身上?
- java - 抽象类实例化另一个实现的抽象类
- java - 如何使用Java Modulus找到两个数字的倍数
- git - GITHUB API v4 - 按问题数量排序存储库