如何在laravel上更新以请求验证的唯一字段

时间:2019-07-01 07:04:39

标签: php laravel laravel-5.8

我正在尝试编辑一个表单,其中有一个带有标题,正文和子句的帖子,该子句是唯一的,因此,如果我编辑但不更新它,则表示已被接受

我正在PostRequest验证中尝试此操作

value of x:       7018424
address of x:     6422316
value at 7018424: 7017768

*****
Enter value of x
*****
99
value of x:       7018424
address of x:     6422316
value at 7018424: 99

y: 99

Post控制器上的功能是:

{this.state.markers.map(marker =>
  <Marker key={marker._id} position={marker.position}>
    <Popup>
      <span> <br/> {marker.content}</span> 
    </Popup>  
  </Marker> 
)}

在我的刀片更新表格上,我也有@method('PUT')

4 个答案:

答案 0 :(得分:1)

您应该尝试以下操作:


public function rules()
 {     
       $slug = $this->request->get("slug");

       return [
            'title' => 'required',
            'body' => 'required',
            'metaTitle' => 'required',
            'metaDescription' => 'required',
            'slug' => ['required', Rule::unique('posts')->ignore($slug,'slug')],
        ];
  }

答案 1 :(得分:0)

尝试这个希望能奏效的

public function rules(Request $request)
    {
        return [
            'title' => 'required',
            'body' => 'required',
            'metaTitle' => 'required',
            'metaDescription' => 'required',
            'slug' => 'required|slug|unique:posts,slug,' . $this->post,
        ];
    }

答案 2 :(得分:0)

这是我找到的唯一解决方案,使用我自己的验证程序PostRequest不起作用,因此对于更新,我在update函数中进行了验证:

public function update(Request $request, $id) {
        $request->validate([
            'slug' => 'required|unique:posts,slug,' . $id,
            'title' => 'required',
        ]);

         $post = Post::find($id);
         $post->fill($request->all());
         $post->save();
        return redirect()->route('articulos.index');
    }

知道为什么会发生这种情况以及如何解决它会很酷,但这目前仍在起作用

答案 3 :(得分:0)

请同时针对StoreUpdate方法进行尝试:

'slug' => [ 
    'required', 
    'slug', 
    'unique:posts,slug' . (isset($this->post)  ? ',' . $this->post : ' ') 
],