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);