学習

【yps1】#task5 .env の指定でひっかかる

こんにちは、mihoka(@mihoka_work)です。

yps1 の #task5 の学習メモです。
手順というよりは、わたしが調べたことや参考URLを中心に書きます。

手順

今回は、データベースから一覧を表示させるWEBアプリの作成です。

  • 簡単なWEBアプリケーション作成
  • Bootstrapの利用

詳細な手順はこちらです。

GitHubのソース(yotaroさん)

今回調べたところ

php artisan

laravel 用のコマンドとのこと。
ちなみに artisan とは職人という意味。

プロジェクト直下で実行する。(今回は/var/www/html/ysp 直下)

モデル

データベースと接続する部分。
データベースのどんなデータを使うかを指定すると理解。
料理でいうところの買い物かな?

コントローラー

値の処理をする部分。
関数の処理とか書くところだと理解。
料理でいうところの調理かな?

ビュー

表示をさせる部分。
HTMLなどで見せるものを書くと理解。
料理でいうところの盛り付けかな?

ルータ

指示を出す部分。
アドレスを指定したり、制御する部分だと理解。
料理でいうところの注文かな?

処理の順番

こんな感じだと思います。

  • ルータ(オムライスが食べたい)
  • モデル(材料買ってきます)
  • コントローラ(料理します)
  • ビュー(盛り付けました)

GitHubの見方

今回は以下にソースがあったので差分などを見ながら確認しました。

左側にある時計マークでヒストリーが確認できる。
どのファイルを変更しているか確認しながら進めました。

あと、今回はいろいろなファイルを見ながらすすめたのでファイル構成も確認できました。

MySQL でカラムを確認する

MySQLでテーブルのカラムを確認する場合には desc を実行。

mysql> desc players;
+-------------+-------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+-------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| country_id | int(11) | YES | | NULL | |
| uniform_num | int(11) | YES | | NULL | |
| position | varchar(2) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| club | varchar(50) | YES | | NULL | |
| birth | date | YES | | NULL | |
| height | int(11) | YES | | NULL | |
| weight | int(11) | YES | | NULL | |
| expired_at | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| deleted_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
| created_at | timestamp | YES | | NULL | |
+-------------+-------------+------+-----+-------------------+-----------------------------+

.env ファイルの設定でエラー

今回は結構はまってしまってなかなかできなかったです。

/app/Http/Controllers/WelcomeController.php でログの指定をしたら以下が出力

local.DEBUG: SQLSTATE[HY000] [1049] Unknown database 'laravel' (SQL: select `players`.*, `c`.`name` as `c_name`, `t`.`goals` as `t_goals` from `players` left join `countries` as `c` on `players`.`country_id` = `c`.`id` left join `total_goals` as `t` on `players`.`id` = `t`.`id` where `players`.`deleted_at` is null order by `t`.`goals` desc, `players`.`club` asc, `players`.`uniform_num` asc limit 11 offset 0)

原因

.env ファイルに記載しているデータベース名が違っていました。

#DB_DATABASE=worldcup2014db
DB_DATABASE=laravel

なにかで今回のデータベース名をコメントアウトしていました。

対処

データベース名を以下に変更

DB_DATABASE=worldcup2014db

無事に表示されました。

(補足)

ログ表示させるためには use Log を定義しました。

use Log;
:
Log::debug($e->getMessage());

/storage/logs/laravel.log に出力されます。

感想

・Laravel を使ったコーディングになり疑問がいっぱい。
・表示されてとてもうれしかった。