在处理完几行之后,我试图保存几行,但是在检查数据库中是否记录了任何数据时
我的用户表包含格式为“ yegftwr”和“ BOL234”的代码列,我需要将所有格式为“ yegftwr”的代码都转换为“ BOLxxx”,其中xxx是递增数字
我的代码首先获取所有代码,然后查找将字符串“ BOL”分开的最高编号xxx (第一个循环)
然后查找“ yegftwr”格式代码的前三个字符,将其转换为大写字母,并将其与转换为大写字母的“玻利维亚”的前三个字符进行比较 如果它们不同,则代码“ 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) "------------------------"
...
但没有数据存储在数据库中
答案 0 :(得分:2)
您正在获取“ pais”为“玻利维亚”的数据。结果将显示Boliva的所有数据。在第二个foreach循环中,您正在检查$ cod-> codigo不等于“玻利维亚”。检查您的第二个条件是否等于或不等于
答案 1 :(得分:1)
要保存用户记录,您应在“ id
”方法中添加“ select()
”列或删除“ select()
”方法。
$tmp = User::select('id', 'codigo')->where('pais','Bolivia')->orderBy('codigo', 'asc')->get();
或
$tmp=User::where('pais','Bolivia')->orderBy('codigo', 'asc')->get();
代码:
use App\User;
use DB;
public function handle()
{
$users = User::select('id', 'codigo')->where('pais','Bolivia')->orderBy('codigo', 'asc')->get();
$codePrefix = strtoupper(substr('Bolivia', 0, 3));
foreach ($users as $user)
{
if (strtoupper(substr($user->codigo, 0, 3)) == $codePrefix)
{
$lastCodeNumber = substr($user->codigo, 3, 6);
}
}
foreach ($users as $user)
{
if (strtoupper(substr($user->codigo, 0, 3)) != $codePrefix)
{
$newCodeNumber = (((int)$lastCodeNumber)+1);
$user->codigo = $codePrefix.(string)$newCodeNumber;
$user->save();
}
}
}
希望有帮助。