【Laravel】#1 コンテナの起動とDB挿入

# していること
ララベルで実装されたECサイトのリーディングをしていきたいと思います。
使用するオープンソースのURLはこちらです。
https://github.com/jsdecena/laracom

# コンテナの起動
クローンして環境構築は済みましたでしょうか？コンテナが3つ起動しました。`docker ps`で確認してみましょう。
```
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS       PORTS                               NAMES
45e2607784f5   nginx:alpine   "/docker-entrypoint.…"   7 weeks ago   Up 3 weeks   80/tcp, 0.0.0.0:8000->8000/tcp      webserver
3471397e79b3   laracom-app    "docker-php-entrypoi…"   7 weeks ago   Up 3 weeks   9000/tcp                            app
d2f2f2494700   mysql:5.7      "docker-entrypoint.s…"   7 weeks ago   Up 3 weeks   0.0.0.0:3306->3306/tcp, 33060/tcp   db
```
# 初期データの投入
マイグレーションとシーディングをします。Laravelのコマンドはアプリケーションが実行されている環境内で打ちます。`docker exec -it app bash`でappコンテナに入り、appコンテナの中で`php artisan migrate:fresh --seed`を実行しましょう。後者はテーブルをすべて削除し、マイグレーション、シーディングを一気にするコマンドです。
```
laracom % docker exec -it app bash
root@3471397e79b3:/var/www#
root@3471397e79b3:/var/www#
root@3471397e79b3:/var/www#
root@3471397e79b3:/var/www# php artisan migrate:fresh --seed
Dropped all tables successfully.
Migration table created successfully.
Migrating: 2014_10_12_000000_create_customers_table
...
Seeded:  Database\Seeders\AttributeTableSeeder (24.22ms)
Database seeding completed successfully.
root@3471397e79b3:/var/www#
```
初期データの挿入が完了しました。
# サイトで確認
[http://localhost:8000](http://localhost:8000)にアクセスし、任意の文字列で検索してみましょう。「a」で検索してみます。
![スクリーンショット 2023-06-10 13.19.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3150767/6e601410-fa90-988f-183e-5d03bc4c1108.png)
データが挿入されていることをDBから確認できました。あとで言及しますが、検索ワードはクエリパラメタに格納されます。「a」で検索することは[http://localhost:8000/search?q=a](http://localhost:8000/search?q=a)にアクセスすることと等価です。
# DBから確認
DBから確認してみましょう。`docker exec -it db bash`でDBコンテナに入ります。
```
 docker exec -it db bash
bash-4.2#
```
パスワードはdocker-compose.ymlを確認してください。secretになっているはずです。
```
bash-4.2# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 298
Server version: 5.7.41 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
```
データベース名はdocker-compose.ymlを確認してください。homesteadになっているはずです。
```
mysql> use homestead
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>
```
商品テーブルを探します。
```
mysql> show tables;
+-----------------------------------+
| Tables_in_homestead               |
+-----------------------------------+
| addresses                         |
| attribute_value_product_attribute |
| attribute_values                  |
| attributes                        |
| brands                            |
| categories                        |
| category_product                  |
| cities                            |
| countries                         |
| couriers                          |
| customers                         |
| employees                         |
| migrations                        |
| order_product                     |
| order_statuses                    |
| orders                            |
| password_resets                   |
| permission_role                   |
| permission_user                   |
| permissions                       |
| product_attributes                |
| product_images                    |
| products                          |
| provinces                         |
| role_user                         |
| roles                             |
| shoppingcart                      |
| states                            |
| subscriptions                     |
+-----------------------------------+
29 rows in set (0.03 sec)

mysql>
```
productsがそれっぽいテーブルなのでレコードを出力します。表が横に長くなり過ぎてしまうため、idとnameだけ出力しましょう。
```
mysql> select id,name from products;
+----+-----------------------------------------------------------------------+
| id | name                                                                  |
+----+-----------------------------------------------------------------------+
|  1 | Iusto qui rerum molestiae omnis ut cum.                               |
|  2 | Eos cum sint magnam iste aut rerum.                                   |
|  3 | Consequuntur animi accusamus maxime et culpa.                         |
|  4 | Accusamus dicta commodi debitis.                                      |
|  5 | Voluptatem eos enim iste aliquam dolores nemo.                        |
|  6 | Nulla aliquam laboriosam modi tempora.                                |
|  7 | Ut dignissimos veritatis consequatur quia cum rerum animi unde.       |
|  8 | Aut voluptatum soluta est iusto placeat dolorem.                      |
|  9 | Aliquid hic repellendus error similique et eius quas neque.           |
| 10 | Blanditiis repudiandae fuga quidem commodi aperiam.                   |
| 11 | Ut occaecati sit sint rerum modi.                                     |
| 12 | Doloremque doloribus asperiores in dolorem architecto minus nesciunt. |
+----+-----------------------------------------------------------------------+
12 rows in set (0.00 sec)

mysql>
```
確かに[http://localhost:8000/search?q=a](http://localhost:8000/search?q=a)では「a」の含まれている商品のみが検索されていたと思います。データが挿入されていることをDBから確認できました。