update заменяет все столбцы в Laravel - PullRequest
1 голос
/ 11 июля 2020

Я передаю объект сообщения для обновления своего сообщения, но, к моему удивлению, когда я пытаюсь отредактировать отдельное сообщение, все мои сообщения заменяются отредактированными значениями (изображение или текст), которые я ввел при попытке редактирования.

Постконтроллер

 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');

1 Ответ

0 голосов
/ 11 июля 2020

ваш код будет обновлять все сообщения для этого аутентифицированного пользователя.

для решения этой проблемы:

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');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...