Laravel で MariaDB の CRUD (その 5 Update)

## こちらのページの続きです。

>[Laravel で MariaDB の CRUD (その 4)](https://qiita.com/ekzemplaro/items/50d48c623fb339976a5c)
データ更新機能を作ります。

<ol>
<li>ルーティングを確認</li>

>articles.update があることを確認

```bash
php artisan route:list
```

<li>一覧ページに編集のリンクをつけます。</li>

```php:resources/views/articles/index.blade.php
{{-- layoutsフォルダのapplication.blade.phpを継承 --}}
@extends('layouts.application')

{{-- @yield('title')にテンプレートごとにtitleタグの値を代入 --}}
@section('title', '記事一覧')

{{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
@section('content')
<div>
    <a href="/articles/create">新規作成</a>
</div>
<table>
 @foreach ($articles as $article)
	<tr>
    <td>{{$article->title}}</td>
    <td>{{$article->body}}</td>
	<td><a href="/articles/{{$article->id}}">詳細を表示</a></td>
	<td><a href="/articles/{{$article->id}}/edit">編集する</a></td>
	</tr>
  @endforeach
</table>
@endsection
```

<li>詳細のページに編集のリンクをつけます。</li>

```php:resources/views/articles/show.blade.php
{{-- layoutsフォルダのapplication.blade.phpを継承 --}}
@extends('layouts.application')

{{-- @yield('title')にテンプレートごとの値を代入 --}}
@section('title', '記事詳細')

{{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
@section('content')
  <h1>{{$article->title}}</h1>
  <p>{{$article->body}}</p>
  <br><br>
  <a href="/articles/{{$article->id}}/edit">編集する</a>
  <a href="/articles">一覧に戻る</a>
@endsection
```

<li>editアクションを編集</li>

```php:app/Http/Controllers/ArticlesController.php
// 略
    public function edit($id)
    {
        $article = Article::find($id);
        return view('articles.edit', ['article' => $article]);
    }
// 略
```

<li>ビューの作成</li>

```php:resources/views/articles/edit.blade.php
{{-- layoutsフォルダのapplication.blade.phpを継承 --}}
@extends('layouts.application')

{{-- @yield('title')にテンプレートごとの値を代入 --}}
@section('title', '編集')

{{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
@section('content')
  <form action="/articles/{{$article->id}}" method="post">
    {{ csrf_field() }}
    <div>
      <label for="title">タイトル</label>
      <input type="text" name="title" placeholder="記事のタイトルを入れる" value="{{$article->title}}">
    </div>
    <div>
      <label for="body">内容</label>
      <textarea name="body" rows="8" cols="80" placeholder="記事の内容を入れる">{{$article->body}}</textarea>
    </div>
    <div>
      <input type="hidden" name="_method" value="patch">
      <input type="submit" value="更新">
    </div>
  </form>
@endsection
```

<li>updateアクションを編集</li>

```php:app/Http/Controllers/ArticlesController.php
// 略
    public function update(Request $request, $id)
    {
  // idを元にレコードを検索して$articleに代入
  $article = Article::find($id);
  // editで編集されたデータを$articleにそれぞれ代入する
  $article->title = $request->title;
  $article->body = $request->body;
  // 保存
  $article->save();
  // 詳細ページへリダイレクト
  return redirect("/articles/".$id);
    }
// 略
```

<li>サーバーを起動してブラウザーで確認</li>

```bash
php artisan serve
```

>http://localhost:8000/articles
![laravel_jun1408.png](https://qiita-image-store.s3.amazonaws.com/0/179446/2f0ecb2a-50c6-0b3b-f4f8-70d53367ec5e.png)
編集するをクリック
![laravel_jun1409.png](https://qiita-image-store.s3.amazonaws.com/0/179446/7caba2e9-7d66-5ecd-1545-4e55a83430c5.png)
更新をクリック
![laravel_jun1410.png](https://qiita-image-store.s3.amazonaws.com/0/179446/f9c931b1-7b64-fe82-f929-fa894689be3d.png)
一覧に戻るをクリック
![laravel_jun1411.png](https://qiita-image-store.s3.amazonaws.com/0/179446/7bb4a97f-acd2-cac2-16c3-78beaa0a4647.png)

</ol>

## 次のページ
[Laravel で MariaDB の CRUD (その 6 Delete)](https://qiita.com/ekzemplaro/items/87c3b8f98920a50e8141)