2017-11-16 9 views
2

私は、データベースをセットアップし、私のUsersControllerの各行の列statusを更新したいました:これが動作しているlaravelのmysqlデータベース内の行を更新する

User::where('id', '=', 1)->update(['status' => $status]); 

、:

私はこれで開始

  • はいくつかを実行し、テーブルから

    1. のforeach $番号:しかし、私はすべての行を変更するには、いくつかのループを必要とし、このような何か私のためのように、その不明確な方法を

      User::where('id', '=', $id)->update(['status' => $status]) 
      
    2. エンドforeachの

    :各行の「ステータス」列内の個々の$状態変数

  • 設定個々$ステータス値を変更するためのコードforeachを介してテーブルを通過します。次に、私のコードから計算されたステータスを個々のIDに保存しますか?

  • 答えて

    2

    の表は、数百万行が含まれていない限り...それはやっての簡単な手続き方法...

    $users = Users::get(); // Gets a collection of all users... 
    foreach ($users as $user) { 
        //compute your status 
        $user->status = get_your_user_status($user->id); 
        $user->save(); 
    } 
    

    あなたはまた、例えばマップをより機能的なアプローチを使用して検討することもでき...

    +0

    を示唆したようにチャックを使用することができるはずです。 – ceejayoz

    +0

    これが助けになりました! – Matthias

    3

    @Sergeソリューションは、いくつかのレコードの罰金ですが、表には、* * `chunk`関数に見て、数百万行が含まれていない場合@ceejayozが

    User::chunk(100, function ($users) { 
        $users->each(function ($user) { 
         $user->status = getStatus($user); 
         $user->save(); 
        }); 
    }); 
    
    関連する問題