Laravel更新记录,其中某些内容已更改
我希望使用write方法更新某些内容已更改的记录。我有以下表格: 问题是当我更改姓名、姓氏或电子邮件,但不更改用户登录名时。在我的确认书中,我写道:Laravel更新记录,其中某些内容已更改,laravel,updates,Laravel,Updates,我希望使用write方法更新某些内容已更改的记录。我有以下表格: 问题是当我更改姓名、姓氏或电子邮件,但不更改用户登录名时。在我的确认书中,我写道: 'name' => ['required', 'max:255', 'unique:users'], 但是规则unique:users阻止我在未更改用户名时进行更新 我找到了这个主题,但我不明白什么是“$partnersData”$partnersData是上次更新的日期吗 我写了这个方法: public function update(
'name' => ['required', 'max:255', 'unique:users'],
但是规则unique:users
阻止我在未更改用户名时进行更新
我找到了这个主题,但我不明白什么是“$partnersData
”<代码>$partnersData是上次更新的日期吗
我写了这个方法:
public function update(CreateUserUpdateRequest $request, $id){
$user = User::find($id);
foreach ($user as $column => $value) {
if ($column === $id) {
continue;
}
$user->$column = $value;
}
if ($user->isDirty()) {
$user->update($request->all());
Session::flash('userUpdateOK', 'Dane użytkonika zostały zaktualizowane poprawnie.');
}
return redirect('user');
}
我想你可能把事情复杂化了 您可以检查用户表中是否存在该行,然后只更新相关字段-
$User = User::where('name', $request->input('name'))->first();
if($User){
$User->email = $request->input('email');
$User->save();
}
return redirect('user')
Laravel
save()
函数运行isDirty()
函数,并确保只有在任何列发生更改时才会更新数据库。我认为这可能过于复杂了
您可以检查用户表中是否存在该行,然后只更新相关字段-
$User = User::where('name', $request->input('name'))->first();
if($User){
$User->email = $request->input('email');
$User->save();
}
return redirect('user')
Laravel
save()
函数运行isDirty()
函数,并确保数据库仅在任何列发生更改时更新。同时$user->column=$value代码>应该是$user->$column=$value
缺少列变量前面的$
,也$user->column=$value代码>应该是$user->$column=$value
缺少列变量之前的$
,无法更新记录循环以满足请求
foreach ($request as $column => $value) {
// do something
}
在循环内部检查属性是否存在,如果存在则替换
if (property_exists($user, $column)) {
$user->$column = $value;
}
所以你的代码是这样的
public function update(CreateUserUpdateRequest $request, $id){
$user = User::find($id);
foreach ($request as $column => $value) {
if (property_exists($user, $column)) {
$user->$column = $value;
}
}
if ($user->isDirty()) {
$user->save();
Session::flash('userUpdateOK', 'Dane użytkonika zostały zaktualizowane poprawnie.');
}
return redirect('user');
}
或者您可以只Model::set(array())
要更新您的记录,请循环您的请求
foreach ($request as $column => $value) {
// do something
}
在循环内部检查属性是否存在,如果存在则替换
if (property_exists($user, $column)) {
$user->$column = $value;
}
所以你的代码是这样的
public function update(CreateUserUpdateRequest $request, $id){
$user = User::find($id);
foreach ($request as $column => $value) {
if (property_exists($user, $column)) {
$user->$column = $value;
}
}
if ($user->isDirty()) {
$user->save();
Session::flash('userUpdateOK', 'Dane użytkonika zostały zaktualizowane poprawnie.');
}
return redirect('user');
}
或者您可以只Model::set(array())
“唯一:用户”功能记录我未更改登录名(“名称”)的更新记录
您必须稍微更改验证规则:
'name' => ['required', 'max:255', 'unique:users,name,' . $id],
如果用户是您要更新的用户,则这将忽略唯一性
文档中“强制唯一规则忽略给定ID”下还描述了另一种可能的语法
然后你就可以正常更新了
作为补充信息,更新仅在实际发生更改时有效,否则
处的updated\u列不会更改
“唯一:用户”功能记录我未更改登录名(“名称”)的更新记录
您必须稍微更改验证规则:
'name' => ['required', 'max:255', 'unique:users,name,' . $id],
如果用户是您要更新的用户,则这将忽略唯一性
文档中“强制唯一规则忽略给定ID”下还描述了另一种可能的语法
然后你就可以正常更新了
作为补充信息,只有在有实际更改时更新才会生效,否则
栏中的updated\u将不会更改。问题不清楚。是否要更新记录并获取名称的验证错误?如果要使用验证的唯一
规则保留您的名称
,请尝试添加中解释的其他规则。问题不清楚。是否要更新记录并获取名称的验证错误?如果要使用unique
验证规则保留您的name
,尝试添加在中解释的其他规则。updated\u at
列仅在行中实际更新时更新。updated\u at
列仅在行中实际更新时更新。