我的更新功能如下:
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.1/nv.d3.js"></script>
<button onClick="updateTheChart()">Update</button>
<div id="chart3"></div>
我的验证规则如下:
public function updateRating(UpdateRatingRequest $request) {
$param = $request->only('id', 'rating');
$id = $param['id'];
$rating = $param['rating'];
$review = Review::find($id);
$review->rating = $rating;
$review->save();
}
我想添加验证服务器端laravel。如果特定的id列,已更新评级列,则无法再次更新。因此,每个id,其评级列只能更新一次
例如,我有id = 8.如果在id = 8,则评级列已更新。然后,id = 8的评级列无法再次更新。所以它只能更新一次
我该怎么做?
更新
这是我用mongodb检查id为null的id的方法:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateRatingRequest extends FormRequest {
public function rules() {
return [
'id'=>'required',
'rating'=>'required'
];
}
}
该过程与laravel相同
答案 0 :(得分:1)
正如您在评论中所述,评级值预先为null,您可以使用exists验证规则:
public function rules()
{
return [
'id' => [
'required',
Rule::exists('reviews')->where(function ($query){
$query->whereNull('rating');
})
],
'rating' => 'required',
];
}
请注意,您必须在use
课程中添加Rule
外观的UpdateRatingRequest
声明:
use Illuminate\Validation\Rule;
希望这有帮助!
答案 1 :(得分:0)
一种方法是添加额外的列,例如“isEditable”,默认值为1
然后在规则中 -
public function rules() {
return [
'id'=>'required',
'rating'=> ['required', 'exists:isEditable,1']
];
}
更新时,将isEditable的值更改为0,然后验证程序将不允许再次更新。