Laravel 5.7で基本的なCRUDを作る

**注意:** この記事は更新停止します。
今後、Laravelの更新に合わせて修正することはありません。
今回の5.7が最後です。
理由は、私自身がLaravelを実用する機会が全くないからです。


# デモ
- デモ: https://sutara79-laravel.herokuapp.com/
- ソースコード: https://github.com/sutara79/demo-laravel-crud


# 環境
- Windows 10
- [XAMPP 7.2.2](https://www.apachefriends.org/download.html)
- [Composer 1.7.2](https://getcomposer.org/download/)
- Laravel 5.7 (クリーンインストール)


# 使用データベース
- ローカル: MySQL (5.4ではSQLiteを使っていた)
- Travis CI: Postgres
- Heroku (本番): Postgres

## テーブル
- users: ユーザーの情報。
- posts: 投稿の情報。


# 手順
個別の記事で説明します。

## 準備
1. [Laravelをインストールする](https://qiita.com/sutara79/items/c97aba8710baa7c0bfc7)
1. [本番に合わせてバーチャルホストを設定する](https://qiita.com/sutara79/items/e2986209ae54923fc3a6)
1. [DBとしてMySQLを用意する](https://qiita.com/sutara79/items/e19fb386451ab9a4a5fa)

## 練習
2. [簡単な画面表示を試す](https://qiita.com/sutara79/items/a911b1ad43b64dc6331f)
3. [ビューをレイアウトと個別ビューに分ける](https://qiita.com/sutara79/items/438dc5fbd56f4c1ac9dd)

## CRUD機能
6. [Bootstrapを使ってレイアウトを作る](https://qiita.com/sutara79/items/3ae420f756573a4a2f93)
7. [トップページを作る](https://qiita.com/sutara79/items/8522dfcbb2edcdf43a5c)
4. [usersのCRUD機能を実装する](https://qiita.com/sutara79/items/cd4371b246b44a2cf87f)
5. [postsのCRUD機能を実装する](https://qiita.com/sutara79/items/4d4854d0f1137aed20d4)

## 機能を追加1
1. [Laravel Debugbarを使う](https://qiita.com/sutara79/items/9fd442a81001842aeba1)
5. [ページネーションの機能を追加する](https://qiita.com/sutara79/items/e9b83b0ef9b069b519a3)
6. [postsとusersを関連させる](https://qiita.com/sutara79/items/9e57e7af03b65e0d6047)
7. [ビューで、現在のコントローラ名を取得する](https://qiita.com/sutara79/items/9309824806d99f0fce6a)
6. [多言語対応](https://qiita.com/sutara79/items/fa351a907ae5ba3a9802)
9. [削除確認をBootstrapのModalで行う](https://qiita.com/sutara79/items/982ad923352573d7f68d)

## 認証・認可
7. [ログイン機能を追加する](https://qiita.com/sutara79/items/fdbfbf2a8f86f7d8f7fb)
8. [日本語のパスワードリセット用のメールを送信する](https://qiita.com/sutara79/items/0ea48847f5565aacceea)
9. [ユーザー登録確認用のメールを送信する](https://qiita.com/sutara79/items/c913d7eedd5456635ea5)
9. [認可 (記事の編集はオーナーに限る、などの制限)](https://qiita.com/sutara79/items/11d8417a6fc91ca1b841)

## バリデーション
7. [バリデーション(posts)](https://qiita.com/sutara79/items/867a9dc7de50df8fd53c)
8. [バリデーション(users)](https://qiita.com/sutara79/items/84f3023582c63cfe38a2)

## 機能を追加2
1. [1回限りのメッセージを表示する](https://qiita.com/sutara79/items/128b669eec39791c1fa8)
2. [エラーページを作る](https://qiita.com/sutara79/items/534b03b718cc131f8276)

## テスト
1. [テストの基本](https://qiita.com/sutara79/items/f8c8313c97ce4d2febc2)
2. [単体テストの例](https://qiita.com/sutara79/items/81cf687588c00df0f847)
2. [ブラウザテストの基本](https://qiita.com/sutara79/items/95a5c59830006c715ae5)
3. [ブラウザテストを記述する](https://qiita.com/sutara79/items/9190c8444a49842ca25a)
2. [TravisCIでテストしてCodecovでカバレッジを取得する](https://qiita.com/sutara79/items/2e4c77024364193c06cb)

## 本番環境 (Heroku)
4. [Herokuにデプロイする](https://qiita.com/sutara79/items/a173b969474d9f5afe1b)

## その他
- [Laravelのパッチバージョンを上げる](https://qiita.com/sutara79/items/29c4667c19319fab8d86)
- [Laravel5.5から5.6へ更新する](https://qiita.com/sutara79/items/0ff6d757b5496c97e2e0)
- [Laravel5.4から5.5へ更新する](https://qiita.com/sutara79/items/c07882be23a53c498482)
- [キャッシュや古いデータを削除したい](https://qiita.com/sutara79/items/6a31f6aa070a4f410d7a)
- [公式ドキュメントでは言及されていないヘルパー関数](https://qiita.com/sutara79/items/bdafa8c69f9f3774fef6)

#### 更新停止
無駄に複雑になってしまうため、Redisは使わないことにしました。

- [セッションの保存にRedisを使う (ローカル環境)](https://qiita.com/sutara79/items/f4ff80c6c513f3b49c08)
- [セッションの保存にRedisを使う (Heroku)](https://qiita.com/sutara79/items/053d65dc43d78bbe8d58)