簡體   English   中英

laravel(5.5)的保存方法中沒有任何結果

[英]laravel(5.5) there are no results in save method for a collection

我試圖在處理完幾行后保存幾行,但是當檢查數據庫中記錄了任何數據時

我的用戶表包含格式為“ 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) "------------------------"
...

但是沒有數據存儲在數據庫中

您正在獲取“ pais”為“玻利維亞”的數據。 結果將顯示Boliva的所有數據。 在第二個foreach循環中,您正在檢查$ cod-> codigo不等於“玻利維亞”。 檢查您的第二個條件是否等於或不等於

要保存用戶記錄,您應該將“ 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();
        }
    }

}

希望能幫助到你..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM