更新数据出错时忽略用户结果输入
Ignoring the user result input when updating data goes wrong
我正在研究:
edit.blade.php
用户可以编辑数据的地方和控制器的更新方法在这里:
public function update(Request $request, $id)
{
$discountCode = DiscountCode::find($id);
$request->validate([
'code' => 'unique:discount_codes,code'.$discountCode->id,
'started_at' => 'required_if:timespan,TRUE',
'ended_at' => 'required_if:timespan,TRUE',
],
...
}
所以你可以看到 code
在 discount_codes
table 中必须是唯一的。
所以我尝试添加:
$discountCode->id
为了忽略当前数据的唯一验证规则但它不起作用并且returns这个错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'code15' in
'where clause' (SQL: select count(*) as aggregate from
`discount_codes` where `code15` = GIGvJjp4PM)
15是我的数据行id。
那么这里出了什么问题?我该如何解决这个问题?
使用Rule::class
创建规则并忽略特定的id
use Illuminate\Validation\Rule;
//...
public function update(Request $request, $id)
{
$discountCode = DiscountCode::findOrFail($id);
$request->validate([
'code' => [Rule::unique('discount_codes')->ignore($id)],
'started_at' => 'required_if:timespan,TRUE',
'ended_at' => 'required_if:timespan,TRUE',
],
...
}
我正在研究:
edit.blade.php
用户可以编辑数据的地方和控制器的更新方法在这里:
public function update(Request $request, $id)
{
$discountCode = DiscountCode::find($id);
$request->validate([
'code' => 'unique:discount_codes,code'.$discountCode->id,
'started_at' => 'required_if:timespan,TRUE',
'ended_at' => 'required_if:timespan,TRUE',
],
...
}
所以你可以看到 code
在 discount_codes
table 中必须是唯一的。
所以我尝试添加:
$discountCode->id
为了忽略当前数据的唯一验证规则但它不起作用并且returns这个错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'code15' in
'where clause' (SQL: select count(*) as aggregate from
`discount_codes` where `code15` = GIGvJjp4PM)
15是我的数据行id。
那么这里出了什么问题?我该如何解决这个问题?
使用Rule::class
创建规则并忽略特定的id
use Illuminate\Validation\Rule;
//...
public function update(Request $request, $id)
{
$discountCode = DiscountCode::findOrFail($id);
$request->validate([
'code' => [Rule::unique('discount_codes')->ignore($id)],
'started_at' => 'required_if:timespan,TRUE',
'ended_at' => 'required_if:timespan,TRUE',
],
...
}