我正在传递post对象以更新我的帖子。。。 令我惊讶的是,当我试图编辑一个帖子时,所有的帖子都被替换为我在尝试编辑时输入的编辑值(图像或文本)。
public function update(Post $id)
{
$data = request()->validate([
'about' => 'required',
'image' => '',
]);
if(request('image')){
$imagePath = request('image')->store('uploads','public');
$image = Image::make(public_path("storage/{$imagePath}"))->fit(500,500);
$image->save();
$imageArray = ['image' => $imagePath];
}
auth()->user()->posts()->update(array_merge( $data, $imageArray ?? [] ) );
$user = Auth::guard('web')->id() ;
return redirect()->route('home',['user'=>$user]);
}
Route::get('/post/edit/{post}', 'PostController@edit')->name('post.edit');
Route::patch('/p/update/{id}', 'PostController@update')->name('post.update');
您的代码将更新此经过身份验证的用户的所有文章。
要解决此问题:
Route::get('/post/edit/{post}', 'PostController@edit')->name('post.edit');
Route::patch('/post/edit/{post}', 'PostController@update')->name('post.update');
在您的控制器中
public function update(Post $post){
// validation code here
// image upload code
// update your database
$post->update([
//update database fields
]);
return redirect('home');
}