パスワード入力フィールドは空のままにされたときにどのように私はLaravelでパスワードを更新避けることができますか?

Neyelsonアウベス:

私は、管理者がユーザーのパスワードを更新することができますlaravelでこのコードを得ました:

public function editarmembro(Request $dados)    {

        $validatedData = $dados->validate([

            'name' => 'required',
            'email' => 'required',
            'credencial' => 'required',

        ]);

        $dados = $dados->all();

        if (!empty($dados['password'])) {
            $dados['password'] = Hash::make($dados['password']);
        }

        DB::table('users')->where('id', $dados['id'])->update(
            [ 'name' => $dados['name'], 'email' => $dados['email'], 'credencial' => $dados['credencial'], 'password' => $dados['password'], 'sobre' => $dados['sobre'], 'updated_at' => Carbon::now(),  ]
        );

        return redirect()->route('membros')->with('mensagemSucesso',  'As informações do membro "'.$dados['name'].'" foram atualizadas com sucesso.');

    }

私の問題は、彼がパスワードフィールドを空白のままにすると、私はパスワードフィールドはNULLにすることはできませんというエラー画面を取得し、です。彼はパスワードフィールドに何かを挿入する場合、私は彼がパスワードフィールドを空白のままにした場合、私のコードは、パスワードを更新しないようにしたいが、DO更新。

ヘルプは、pls。

porloscerrosΨ:

あなたはからそれを削除することができ$dados、それが空の場合は、配列:

if (!empty($dados['password'])) 
    $dados['password'] = Hash::make($dados['password']);
else 
    unset($dados['password']);

または三項演算子を持ちます

!empty($dados['password'])? $dados['password'] = Hash::make($dados['password']): unset($dados['password']);

そして全て以来、フィールドの名前は、要求のものと一致し、updated_atフィールドはオートコンプリートは、更新のために、アレイを再構築する必要はありません必要があります。

DB::table('users')->where('id', $dados['id'])->update($dados);

とにかく、アレイを再構築したい場合は、そうすることができます

$update_dados = [ 
        'name' => $dados['name'], 
        'email' => $dados['email'], 
        'credencial' => $dados['credencial'], 
        'sobre' => $dados['sobre'], 
        'updated_at' => Carbon::now(),  
];

if (!empty($dados['password'])) 
    $update_dados['password'] = Hash::make($dados['password']);

DB::table('users')->where('id', $dados['id'])->update($update_dados);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=9952&siteId=1