Обновить данные в laravel 6 - PullRequest
       0

Обновить данные в laravel 6

0 голосов
/ 16 апреля 2020

Я пытаюсь создать crud в laravel 6. Процесс создания, чтения и удаления работает нормально. Но при обновлении данные в таблице не меняются. Может ли кто-нибудь помочь мне найти проблему? Следующий мой код.

Маршрут

Route::get('/blog', 'BlogController@index');
Route::get('/blog/add','BlogController@add');
Route::post('/blog/store','BlogController@store');
Route::get('/blog/edit/{id}','BlogController@edit');
Route::post('/blog/update','BlogController@update');

Контроллер

public function index()
    {
        $blog = DB::table('blog')->get();
        return view('blog',['blog' => $blog]);
    }


public function edit($id)
    {       
        $blog = DB::table('blog')->where('blog_id', $id)->get(); 
        return view('edit', ['blog'=>$blog]);
    }

public function update(Request $request)
    {
        DB::table('blog')->where('blog_id',$request->blog_id)->update([
        'blog_title' => $request->title,
        'author' => $request->author]);

return redirect('/blog');
        }

Вид

@foreach ($blog as $n)
<form method="post" action="/blog/update" />
      {{ csrf_field() }}
      Title <input type="text" name="title" value="{{ $n->title}}"> 
      Author<input type="text" name="author" value="{{ $n->author}}">
<button type="submit" class="btn btn-secondary">Update</button>
  </form>
  @endforeach

Ответы [ 3 ]

0 голосов
/ 16 апреля 2020

попробуйте разделить обновление на два утверждения, например, так:

$blog = DB::table('blog')->where('blog_id',$id)->first();
$blog->update([
'blog_title' => $request->title,
'author' => $request->author]);

Также вы можете использовать модели в будущем, чтобы вы могли сделать это следующим образом:

$blog = Blog::where('blog_id',$id)->first();

Не совсем сократите код, но это улучшит читабельность.

0 голосов
/ 16 апреля 2020

Сделайте свое обновление так:

public function update(Request $request)
{
    $post = DB::table('blog')->where('blog_id',$request->blog_id)->first();
    $post->blog_title = $request->title;
    $post->author = $request->author;
    $post->update();
    return redirect('/blog');
    }
0 голосов
/ 16 апреля 2020
You must provide id in your route

Route::post('/blog/update/{id}','BlogController@update');


In update method add parameter id and then find product against id 

public function update(Request $request, $id)
{
DB::table('blog')->where('blog_id',$id)->update([
'blog_title' => $request->title,
'author' => $request->author]);
return redirect('/blog');
}

@foreach ($blog as $n)
<form method="post" action="{{ route('your route name'), ['id' => $$n->id] }}" />
{{ csrf_field() }}
Title <input type="text" name="title" value="{{ $n->title}}"> 
Author<input type="text" name="author" value="{{ $n->author}}">
<button type="submit" class="btn btn-secondary">Update</button>
</form>
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...