子ネコでも出来る！Laravel9とCloud9で作る顧客管理システム 前編 Ver2.0

子ネコでもデキル！初心者向け！Laravel9とCloud9で作る顧客管理システム(超長文) 2.0版 前編

# Cloud9でLaravel9を動かす

## この記事は初心者向けですが、以下の知識が必要です。
- AWSのアカウントを持っていて、簡単な操作が出来ること
- ターミナルの操作が出来ること
- 基本的なLinuxコマンドが使えて、Linuxの仕組みをある程度わかっていること
- HTMLやPHPの基本的な事がわかっていること
- MySQLなどのデータベースの基本的な知識があり簡単なSQL文を実行出来ること
これらの事柄は本記事では説明しないので、予め予備知識として身につけておく必要があります。

## AWSコンソールでCloud9の環境を作成する

![ss1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/c5c76cbb-ae5b-649b-8680-8b3b0511340b.png)
![ss2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/0392d68e-a6cc-d493-f926-d963b9542e4c.png)
![ss3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/9308bafd-c4ce-c375-d3c6-9a6d43d0e2ab.png)

Cloud9でCreate Environmentする。
![ss.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/71137575-3727-193a-eb77-fb02136a42d5.png)

Environment typeにデフォルトの Create a new EC2 instance for environment (direct access)を選択。

Instance typeにデフォルトのt2.micro (1 GiB RAM + 1 vCPU)を選択。メモリーが１GBしかないのでcomposerでメモリー不足エラーが発生する可能性があるが、そのときはSwap領域を増やして対応。

PlatformをAmazon Linux 2からUbuntu Server 18.04 LTSに変更。Ubuntuの方が使いやすいと私は思う。

Cost-saving settingをデフォルトの[After 30 minutes]のままにしておく。

Next stepをクリックして先に進む。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/6e56dabf-2844-3625-baab-de50ced3f9a4.png)

確認画面が表示されるのでCreate environmentボタンをクリックして環境を作成。
![ss 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/92356445-2714-fc04-7ca6-8990b533667d.png)


作成中の画面になる。
![ss 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/5ea463f6-395a-76e8-e564-e21705154f6b.png)

数分で環境ができあがる。
![ss 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/9a6c462b-7871-d780-97ee-23063a49c12e.png)


### ターミナルの使い方について

Cloud9で作業をするときにターミナルを使います。
Cloud9のターミナルの使い方を説明します。

ターミナルの開き方。
Cloud9のWindowメニューからNew Terminalをクリックすると、ターミナルが開きます。

![tmopen1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/2b4161ee-8f19-1041-f0a4-b7c9141c0f11.png)

ターミナルはLinuxのコマンドを入力することが出来ます。
hostnameコマンドを入力してホスト名が表示されることを確認しましょう。

![tmtest2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/b58ed033-72f4-818c-5335-b66b8290f40b.png)

Laravel9をインストールするためにターミナルでの操作が必要になりますので、基本的なLinuxコマンドを使えるようになっておくことを推奨します。

## ターミナルでテキストエディタの基本的な操作方法を覚える

Cloud9はLinuxで動いていいて、Linuxはいろいろな設定ファイルがテキストファイルで記述されています。
テキストファイルを編集することが必須になるので、テキストエディタが使える事が必須です。
Cloud9のIDEでもテキストファイルの編集はできますが、全てのファイルが編集出来るわけでは有りません。
このためターミナル上でテキストファイルを編集するために、テキストエディタの基本操作が出来る必要があります。
Linuxのターミナルで使えるテキストエディタは２種類あります。
vim
nano
です。
vimの方が機能が多く効率よくテキストファイルを編集できますが、操作を覚えるのが少しむずかしいです。
nanoは基本的な操作が簡単に出来るテキストエディタです。

## nanoの基本操作

nanoの記事を別に書いたので下記のURLの記事を参照してください。
https://qiita.com/Shiro-neko-kamen/items/82cbdfaeb291164333be



## PHPとMySQLをインストールする

Laravel9はPHP8以上必要なのでPHP8をインストールします。

PHP8をインストールする前に、Ubuntuに入っている古いPHPを削除します。


ターミナルで以下のコマンドを実行して、どんなPHPが入っているかを確認します。

```bash
 sudo dpkg -l | grep php

```

![ss 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/a56fa751-b3d1-cfdc-b159-d31a948f4386.png)

ターミナルで以下のコマンドを実行して古いPHPを削除します。

```bash
sudo apt-get purge libapache2-mod-php7.2 php php-common php-http php-mysql php-pecl-http php-propro php-raphf php-xdebug php7.2 php7.2-cli php7.2-common php7.2-json php7.2-mysql php7.2-opcache php7.2-readline
```

![ss 7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/65525241-5acb-27c9-177a-01cb1675d5a8.png)


> 以下のエラーが出た場合
> Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
> sudo apt autoremove を実行してみてください。 


apt update upgradeします。ターミナルで以下のコマンドを実行。途中で処理を続けるか聞かれたら Y[Enter]を入力して処理を続けます。

```bash
sudo apt update
sudo apt upgrade
```

ondrej PPA(Personal Package Archive)を追加します。
ターミナルで以下のコマンドを実行します。

```bash
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
```

もう一度apt update upgradeを実行します。

```bash
sudo apt update
sudo apt upgrade
```

ターミナルで以下のコマンドを実行して、php8.1をインストールします。

```bash
sudo apt install php8.1
```

php -vを実行してバージョンを確認

```bash
php -v
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/306a4352-c082-8a0c-de11-2bc61c7d12e0.png)

PHP 8.1.X (cli) (built: Jan 24 2022 10:42:15) (NTS)
が表示されます。(注Xには実行時の最新のバージョンが表示されます。)

Laravelが使ういろんなモジュールもインストールします。
ターミナルで以下のコマンドを実行します。

```bash
sudo apt-get install php8.1-cli  php8.1-common php8.1 php8.1-mbstring php8.1-xml php8.1-dom php8.1-gd php8.1-mysqlnd php8.1-pdo php8.1-zip php8.1-redis php8.1-curl
```

Yes/Noを聞かれたらY[Enter]で先に進みます。

その他のモジュールもインストールします。以下のコマンドを実行します。

```bash
sudo apt autoclean
sudo apt autoremove

sudo apt --purge autoremove

sudo apt install libapache2-mod-php8.1

sudo apt install php8.1-mysql

sudo phpenmod pdo_mysql

sudo apt install php-mysql

php -i

```

## Composerのインストール

以下のコマンドをターミナルで実行してcomposerをインストールします。
composerはPHPのソフトウェアを管理するアプリケーションです。

```bash
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/bin/composer
composer --version
```



# Laravel9のプロジェクトを作る

ターミナルから以下のコマンドを実行してLaravel9のプロジェクトを作成しましょう。
今回プロジェクトフォルダの名前をchibi_crm9としました。

```bash
cd environment/

composer create-project laravel/laravel=9.* chibi_crm9
```

## とりあえず動かしてみる

ターミナルから以下のコマンドを実行して、Laravelを動かしてみましょう。

```bash
cd chibi_crm9

php artisan serve --port=8080
```

cd chibi_crm9はカレントディレクトリを変更するLinuxのコマンドです。

php artisan serve --port=8080は簡易Webサーバーを起動するLaravelの命令になります。終了するにはターミナルウィンドウでCtrl + c を入力します。

![launch1b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/23073f2a-7e91-2197-cb11-bd6a4da74c52.png)


### Preview画面を表示してみる

Webサーバーを起動したので、実際に画面表示を確認してみましょう。

Cloud9のメニューからPreviewをクリックして、Preview Running Applicationをクリックしてみましょう。

![preview43a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/09b99dba-860e-f795-b065-138e529dddad.png)


Previewウィンドウが表示されます。

![preview43b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/68e74d44-ee49-3acc-c283-b90d66762eea.png)



Notice Third-party cookies disabled エラーがでたらサファリの設定画面でサイト超えトラッキングを防ぐのチェックを外す。

You can't access preview functionality because your browser blocks third-party cookies (also known as cross-site tracking). To use previews, allow third-party cookies and reload your IDE.
![safari_settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/90894086-1658-a8ce-0267-644b7a5d4271.png)


### Welcome viewを変更してみる

LaravelのWelcomeページをCloud9のIDEを使って変更します。

![first_edit_view_52a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/59a14e2b-46dd-1110-667f-ad6f1b8bfe48.png)

①Cloud9のEnvironmentにあるchibi_crm9左の三角▶をクリックします。
②resources左にある小さい三角形▶をクリックします。
③views左にある小さい三角形▶をクリックします。
④welcome.blade.phpをダブルクリックします。
⑤キーボードから &lt;h1&gt; Hello my laravel9&lt;/h1&gt;     を入力します。
⑥変更内容をを保存します。
![save_mn02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/3fca3e6e-439d-a43b-b2d0-103620014f89.png)

⑦○ボタンをクリックしてリロードします。
⑧キーボードから入力した文字が反映されていることを確認します。


## 新しいページを表示してみる

Laravelのweb.phpを編集して新しいページを表示してみましょう。

Cloud9のIDEからweb.phpをダブルクリックして開きます。下図①②を参照。

web.phpの最後の行に以下の一行を追記します。

```php8.1
Route::get('newpage',function() {return'New Page';});
```

この記述の意味は以下の様になります。
![newpage33route.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/8bb1f8fd-8bee-787b-0575-fc71e53bc1e8.png)



![newpage33e.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/2428398e-f534-d853-2e2c-d6107bcbf805.png)

![newpage33_address_a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/2f5e2707-ab82-9c1b-8b8d-15a3b4bc76d8.png)

ブラウザにどんな情報が送られているかを確認します。
Previewウィンドウの上で右クリックして「フレームのソースを表示」を選択します。

![check_source58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/42075fbf-785e-0bf0-edfb-d3de6c9e442a.png)


フレームのソースには"New Page"という文字しか存在しません。
通常ウェブの画面はHTMLで文字の大きさやレイアウトを指定します。
では、次にHTMLを出力させてみましょう。

表示内容を確認しやすいように、ウィンドウを縦に並べます。

Preview Windowのタグをドラッグしてweb.phpウィンドウの下でドロップします。

![chwin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/05823eaa-406f-6214-b5c8-2f30a4fd9208.png)


web.phpウィンドウの下にPreview Windowが表示されます。

![horwin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/1b5b3f4a-4362-b228-72f7-7f01ced281b2.png)


routes/web.phpにはどのアドレスで何を表示するかの設定が記述されます。

Route::get('newpage'....の行を以下のように変更してみましょう。

```

Route::get('newpage',function() {return'<html><head><title>New Page</title></head><body><h1 style="color:hotpink">NEW PAGE</h1><p>This is new page.</p></body></html>';});

```

![tohtml.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/e2d7c0b5-9c33-891b-9c6c-39585d3fd06a.png)


web.phpにHTMLを記入することに成功しました。
しかし、Webサイトは複数のページがあって、１ページには数百行のHTML文が存在することになります。それを全部web.phpに書いてしまうと、web.phpが数万行になってあとから変更したり、新しいページを追加するのが困難になります。
この煩雑性を回避するために、１ページの情報は１ファイルに分ける仕組みがあります。
Laravelはbladeという画面表示の機能があります。
new pageの内容を１つのbladeファイルに分離してみましょう。

### bladeファイルで表示

Cloud9のIDEのEnvironmentのviewsフォルダアイコンの上で右クリックして、New Fileをクリック。

![new_blade_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/e492630c-8303-27ad-d458-e889e55928ee.png)



![edit_blade_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/1c02e62d-2d64-11f4-c636-07ad06a5ee85.png)

① ファイル名としてnewpage.blade.phpを入力。
② newpage.blade.phpをダブルクリックしてウィンドウを開く。
③ newpage.blade.phpウィンドウが表示される。web.phpの上にドラッグ。
④ HTML文を入力して。保存。

```html
<html>
<head><title>New Page</title></head>
<body><h1 style="color:skyblue">NEW PAGE</h1>
<p>This is new page.</p></body>
</html>

```

⑤ Route::get('newpage'...の行を以下のように変更して、変更内容を保存。

```php
Route::get('newpage',function() {return view('newpage');});

```

⑥ リフレッシュボタンをクリック。bladeファイルに記述した内容が表示されることを確認しましょう。


### Controller

Laravelはウェブアプリケーションを作るためのフレームワークです。
検索などの処理をしたりします。
今作ったbladeファイルは表示内容を記述して、複雑な処理は書きません。
ウェブアプリケーションは、ユーザーの登録内容をデータベースに登録したり、検索などの処理をする必要があります。
Laravelなどのフレームワークではウェブの処理を受けてる部分をControllerと呼ぶ部分に記述します。

ではControllerを使ってページ表示をしてきましょう。

Cloud9IDEで新しいターミナルを開きます。
下記コマンドを実行してカレントディレクトリをプロジェクト直下にします。

```bash
cd chibi_crm9
```

下記コマンドを実行してコントローラーを作成します。

```bash
php artisan make:controller NewPageController
```

app\Http\ControllersフォルダにNewPageController.phpが作成されます。

![newcon27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/8ab41cae-68b0-2519-40da-763c6db51579.png)


![con2_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/426522e1-bb1f-e081-3a71-79ad830fae1d.png)

① NewPageController.phpを、ダブルクリックして開く。
② newpage関数を追加 

```php
    public function newpage() {
        return view('newpage');
    }
```


③ web.phpをコントローラを参照するように編集

```php
Route::get('newpage',[\App\Http\Controllers\NewPageController::class, 'newpage']);
```

④ リフレッシュボタンをクリックして同じページが表示されることを確認。



# artisanコマンド

artisanコマンドはLaravelでコマンドラインからデータベースの設定をしたりコントローラーを作ったりするコマンドです。Laravelを使うときに必ず使うので、artisanコマンドに慣れる必要があります。
使い方はプロジェクトルートから

```bash
php artisan コマンド オプション
```
の様に使います。

![exartiasn19b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/74241c04-1997-4b3b-ab4e-aaf1a887fc68.png)

Cloud9でartisanを実行した例です。


php artisan route:listを実行してみましょう。

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

![ar25b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/e21d5d43-f589-b237-a5a4-3961a6382658.png)



# データベースに接続
## アカウントを確認
メニューから Window→New Terminalでターミナルを開きます。

![cln1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/465101b0-807d-cf7e-1b5d-f9406326f1a5.png)

Cloud9は最初からMySQLがインストールされています。

ターミナルで以下のコマンドを実行してデータベース接続情報を確認します。

```bash
cd /etc/mysql
ls -1
sudo cat debian.cnf

```

client部に書いてある user と password を記録
タイプミスしないようにコピーしてテキストエディタ
などに記録すると良いでしょう。


![cn13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/1ce23f23-14a6-8d3d-793f-ed4aa8a21b97.png)


ターミナルから以下のコマンドを実行します。

```bash

mysql -u#メモしたuser# -p


```

このときパスワードを聞かれるので、メモしたパスワード入力します。

MySQLに接続するので、データベースを作成しましょう。

```sql

create database chibi_crm9;

データベース作成に成功したらexitコマンドでMySQLを抜ける。

```

## Laravelにデータベース接続設定をする

テキストエディタで.envを編集します。
.envはLaravelの環境設定ファイルです。これにデータベース接続設定をします。
Laravel9では .env がcreate-project時にデフォルトの.envが作られるます。.env存在しない場合は.env.exampleを.envというファイル名でコピーして.envを用意します。

テキストエディタはvimかnanoが良いでしょう。
初心者にはnanoがお薦めです。
.envのDB_DATABASEとDB_USERNAMEとDB_PASSWORDにメモしたMySQL接続情報を記入します。

.envの以下の部分を変更


```
DB_DATABASE=chibi_crm9
DB_USERNAME=debian-sys-maint
DB_PASSWORD=#PASSWORD_HERE#  ←このパスワードは各自異なるので自分がメモをしたパスワードを設定

```


![cnt15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/a0d7902c-1d43-25b8-619b-3bbbc6d547b1.png)
![cnt16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/7b045c8b-915b-d134-bf63-22989463ab6d.png)

.envを編集したら、変更内容を保存してテキストエディタを終了させます。nanoの場合はCtrl+Xで保存終了することが出来ます。


## php artisan migrationを実行

コマンドラインから
php artisan migrate
を実行してデータベースにLaravelが使うテーブルを作成します。

```bash
php artisan migrate
```



![cnt17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/a4f4b149-d5f1-2229-6fb8-b1d90a0a25da.png)

migrationはLaravelのデータベース設定内容をデータベース反映させます。


ターミナルからmysqlコマンドを実行してデータベースの状態を確認してみましょう。

![dbconf44b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/8c4f122b-d650-a90b-3a55-5ede3897f132.png)

① mysql -udebian-sys-maint -p を入力してエンターキーをぽん！
② MySQLのパスワードを入力
③ use chibi_crm9 を入力
④ show tables;を入力して実行
⑤ migrationで作成されたテーブル一覧が表示される
⑥ select * from users;で、中身が空なことを確認

-->



## テーブル定義を作成

ターミナルから以下のコマンドを実行してcoffeesテーブル定義を作ります。

```bash
php artisan make:migration create_coffees_table
```
![mig43b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/c3fb34f8-7e8c-b0e7-d93c-727667f690ad.png)

Laravelプロジェクトのdatabase/migrationsディレクトリに ・・・create_coffees_table.phpファイルが作成されます。

次にCLoud9のIDEから・・・create_coffees_table.phpファイルをダブルクリックして内容を編集していきましょう。

![mig_edit_47b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/00ea8c56-5cf4-37b6-3428-1bb50af146cc.png)


① …create_coffees_table.phpファイルをダブルクリック。
② 以下の２行を入力して、保存。

```php
$table->string('name');
$table->integer('price');
```

## 再度 php artisan migrate:fresh を実行

ターミナルで実行。

```bash
php artisan migrate:fresh
```

今回からmigrateに:freshを指定します。:freshを指定すると既存のデータベース定義を一度削除して、最初から再度作成します。

![mig55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/8966f646-6518-875c-68b6-f1ef20282501.png)

coffeesテーブルがデータベースに作成されます。


## テーブルにアクセスするクラスを作成

ターミナルで実行

```bash
php artisan make:model Coffee
```

![model02b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/bc41a325-e6af-f793-0f2c-2d30fc476bdb.png)

② app/Models/Coffee.phpが作られます。


このCoffee.phpの中身を確認しましょう。

Cloud9のIDEからCoffee.phpをダブルクリックします。

![coffee01b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/b44ea188-5262-783b-ea92-2d6fe4769ca3.png)


## tinkerでデータベースにアクセスしてみる

tinkerを使ってcoffeesテーブルにアクセスしてみましょう。

![coffee02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/b6033cf6-022d-1dbf-21cd-2916fc6730ba.png)

ターミナルから以下のコマンドを実行。

```bash
php artisan tinker
```

Tinkerが起動したら

```PHP
$coffees = \App\Models\Coffee::get();
```

を実行します。

まだcoffeesテーブルに何もデータが入っていないので、データは表示されません。

Tinkerから以下のコマンドを実行してデータを作成します。

```php
\App\Models\Coffee::create(['name'=>'Moca','price'=>320,]);
```

![ins1_err.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/4021986e-b82d-e55d-1669-fcf3a78ec57c.png)


実行するとエラーが出ます。

エラーメッセージを読みましょう。今後必ずエラーが発生します。このときにエラーメッセージを読むことはすごく重要です。エラーメッセージで検索してみると良いヒントが見つかることもあります。
'Add [name] to fillable property to allow mass assignment on [App\Models\Coffee].'
nameをCoffeeクラスのfillableプロパティに追加しろ。というような意味です。
LaravelではCoffeeクラスのようなデータをアクセスするクラスには、セキュリティ維持のためfillableプロパティとして項目名を予め定義している必要があります。
公式ドキュメント https://readouble.com/laravel/8.x/ja/eloquent.html

Cloud9のIDEを使ってCoffee.phpにfillableを追加しましょう。

![ins2_fillable_b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/f78fe4e1-73b5-5926-9766-c6e51f19079b.png)

Coffee.phpの11行目あたりに下記の定義を追加して、保存します。

```php
protected $fillable = ['name','price'];
```

もう一度ターミナルからtinkerを再実行します。
先程エラーになったtinkerは古い設定のまま動いているので、いちどCtrl+Cで停止するか、新しいターミナルを開いてtinkerを呼び出します。

以下のコマンドでtinker起動

```bash
 php artisan tinker
```

tinkerが起動したら以下のコマンドでデータ作成

```php
\App\Models\Coffee::create(['name'=>'Moca','price'=>320,]);
```


![ins3_succeeded.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/2233d87b-779b-ba5c-20f5-866a5c8398fa.png)

Coffee::createで新しくデータが１件登録されて、登録したCoffeeオブジェクトが返ってきます。

coffeesテーブルの内容を取得てみましょう。

tinkerの画面で以下のコマンドを実行します。

```php
\App\Models\Coffee::get();
```

![coffee_get_26b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/87050034-d669-16d3-1fce-00050c79b5d6.png)

データベースに格納されたcoffeesテーブルのデータを取得できました。










# mycliコマンドをインストール

## mycliとは
データベースの操作をして中身を書き換えたときに、確認する手段が必要になります。
データベースの中身を確認する手段はいくつかありますが、ここではmycliコマンドを利用します。

本家サイト <a href="https://www.mycli.net/">https://www.mycli.net/</a>


## mycliのインストール
CLoud9のターミナルから以下のコマンドを実行してmycliコマンドをインストールします。

```bash
sudo apt-get install mycli
```

## mycliの起動
Cloud9のターミナルから以下のコマンドを入力してEnterキーで実行します。

```bash
mycli -udebian-sys-maint -p#MySQLのパスワード#
```

## mycliの基本的な使い方

![mycli21b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6384/77ed5db4-dee2-2086-726a-c32b09817f0b.png)

以下のコマンドを mycliで実行するとデータベース一覧が表示されます。

```mycli
show databases
```

以下のコマンドをmycliで実行して利用するデータベースを選択します。

```mycli
use chibi_crm9
```

以下のコマンドをmycliで実行するとテーブル一覧が表示されます。

```mycli
show tables
```

以下のコマンドをmycliで実行してテーブルの内容を表示します。

```mycli
select * from coffees
```




# MEMO

## ストレージ不足になったとき
以下のコマンドを実行してどこが容量を使っているかを調べる。
```bash
sudo du / > /tmp/du
cat /tmp/du | sort -n > /tmp/du.s
tail /tmp/du.s

```


/var/lib/docker/overlay2
が、肥大化している場合。

```
:/tmp $ tail /tmp/du.s
958720	/opt/c9
958736	/opt
1367116	/usr/lib
1578008	/snap
2413760	/var/lib/docker/overlay2
2419748	/var/lib/docker
3419264	/var/lib
3525800	/usr
4422356	/var
11582716	/
:/tmp $

```

https://forums.docker.com/t/some-way-to-clean-up-identify-contents-of-var-lib-docker-overlay/30604/9


```bash
docker container prune

```