「入門Laravelチュートリアル」をWindows+Vagrant/Homesteadでやってみた

はじめに

表題通り、かの有名なチュートリアルを用いて、Homesteadの環境構築~アプリ制作の導入まで試してみたいと思います。

✅ゴール
Homesteadの理解を深める

✅環境
Windows/Homestead

✅参考教材
💻Laravel開発のはじめかた Windows編
💻入門Laravelチュートリアル (1) イントロダクションと環境構築

※当記事では上記の記事を教材と呼ばせていただきます(土下座)。

Windows10でVagrant/Homesteadの環境構築

アプリ制作

※ビュー関連は省いてます。

①Homestead.yamlの編集

DBを追記

databases:
    - homestead
    - todo

再起動して変更を反映

vagrant reload --provision

②コントローラー作成

php artisan make:controller TaskController

③PostgreSQLの設定

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=todo
DB_USERNAME=homestead
DB_PASSWORD=secret

④マイグレーションファイルの作成

php artisan make:migration create_folders_table --create=folders
php artisan make:migration create_tasks_table --create=tasks
~~~~編集後
php artisan migrate
>> Migrating: 2014_10_12_000000_create_users_tabl
   Migrated:  2014_10_12_000000_create_users_table (0.02 seconds)
   Migrating: 2019_08_19_000000_create_failed_jobs_table
   Migrated:  2019_08_19_000000_create_failed_jobs_table (0 seconds)
   Migrating: 2020_05_17_041100_create_folders_table
   Migrated:  2020_05_17_041100_create_folders_table (0 seconds)</pre>
<strong>⑤モデル作成</strong>
<pre>php artisan make:model Folder
php artisan make:model Task</pre>
<strong>⑥シーダーでテストデータ挿入から確認まで</strong>
<pre>php artisan make:seeder FoldersTableSeeder
php artisan make:seeder TasksTableSeeder
composer dump-autoload // 作成したシーダークラスを認識させる。
>> Generating optimized autoload files
   > Illuminate\Foundation\ComposerScripts::postAutoloadDump
   > @php artisan package:discover --ansi
   Discovered Package: facade/ignition
   Discovered Package: fideloper/proxy
   Discovered Package: fruitcake/laravel-cors
   Discovered Package: laravel/tinker
   Discovered Package: nesbot/carbon
   Discovered Package: nunomaduro/collision
   Package manifest generated successfully.
   Generated optimized autoload files containing 4312 classes
php artisan db:seed --class=FoldersTableSeeder // 挿入
php artisan db:seed --class=TasksTableSeeder // 挿入
psql -U homestead -h localhost -d todo // ログイン。パスワードはsecret

todo=# \d
                 List of relations
 Schema |        Name        |   Type   |   Owner
--------+--------------------+----------+-----------
 public | failed_jobs        | table    | homestead
 public | failed_jobs_id_seq | sequence | homestead
 public | folders            | table    | homestead
 public | folders_id_seq     | sequence | homestead
 public | migrations         | table    | homestead
 public | migrations_id_seq  | sequence | homestead
 public | tasks              | table    | homestead
 public | tasks_id_seq       | sequence | homestead
 public | users              | table    | homestead
 public | users_id_seq       | sequence | homestead
(10 rows)

todo=# select title from folders;
    title
--------------
 プライベート
 仕事
 旅行
(3 rows)

todo=# select title from tasks;
      title
------------------
 サンプルタスク 1
 サンプルタスク 2
 サンプルタスク 3
(3 rows)</pre>
<strong>⑦FormRequestクラスの作成 参考:<a href="https://www.hypertextcandy.com/laravel-tutorial-create-folder/">教材5</a></strong>
<pre>php artisan make:request CreateFolder</pre>
※教材5を終えてここまで(ちょっとダレてきたので終了)

<img class="alignnone size-full wp-image-2535" src="https://chobimusic.com/wp-content/uploads/2020/05/4-4.jpg" alt="" width="1581" height="892" />

</div>

<strong>✅Tinkerの利用</strong>

<pre>php artisan tinker
>> Psy Shell v0.10.4 (PHP 7.4.1 — cli) by Justin Hileman
   >>> $folder = \App\Folder::find(1);
   => App\Folder {#3806
        id: 1,
        title: "プライベート",
        created_at: "2020-05-17 04:21:19",
        updated_at: "2020-05-17 04:21:19",
      }
   >>>\App\Task::all();
   => Illuminate\Database\Eloquent\Collection {#3703
        all: [
          App\Task {#3015
            id: 1,
            folder_id: 1,
            title: "サンプルタスク 1",
            due_date: "2020-05-18",
            status: 1,
            created_at: "2020-05-17 04:56:02",
            updated_at: "2020-05-17 04:56:02",
          },
        ~~~
        ],
      }
   >>> \App\Task::where('folder_id', 1)->toSql();
   => "select * from "tasks" where "folder_id" = ?"

toSQLメソッドを利用するとクエリビルダでどんなSQLが作られているか確認できる。

✅Laravelのバージョン確認

php artisan --version
>> Laravel Framework 7.11.0

おわりに

Homesteadの良さは少し理解できたのでチュートリアルは全て実施していないがおわり。

PostgreSQLとMySQLの両方を気軽に切り替えて利用できるのはメリットかな。

が、個人開発レベルならXamppで充分かなと感じた。

次はDockerの理解を深めるために同著者の有名なLaravel+Vue.jsのチュートリアルをやってみようと思います。

コメントを残す