はじめに
日本でのLaravelの認知度も上がってきており、業務での使用も拡大しつつあるようです。
ネットでは、すでに初心者向けの記事が多数存在しますが、それはそれとして、、、
自分なりに確認しながらその記録を残しておくことにします。
どちらかというと、自分をいろんな意味でレベルアップさせるために書いたので、
つまらない内容かもしれませんが、ご了承ください。
ただ、初めてlaravelをやってみようとという人に限定すれば、
ほんの少しは参考になる可能性もあります。
記載内容に間違えがあったらごめんなさい。
インストール後に、実際に作成してみるプロジェクトは、
簡単な応募フォームの導入部分のみを試すものにします。
・入力項目 ⇒ 名前のテキストフィールド
・ボタンは ⇒ 登録ボタン
テキストを入力して登録ボタンを押すと、DBに名前のデータが格納される。
ただ、それだけの超シンプルなものです。
インストール
自PCの環境
- Windows10
- PHP7
- Mysql
1.composer
自分のPCには以前から既に入れていたので、ここでは特になにもしてないですが、
https://getcomposer.org/doc/00-intro.md#installation-windows
ここからダウンロードしたものをインストールすればよさそうです。
2.laravelのインストーラを準備
composer global require "laravel/installer"
プロジェクト生成
3.laravelコマンドを使ってプロジェクト生成
laravel new entry
composer create-projectによる作成方法もあるようですが、
とりあえずlaravelコマンドで実施。
C:\project_xampp\htdocs\laravel55
ここをカレントディレクトリとして実行したら、この配下にentryというディレクトリが生成され、
中をみると多数ファイルやフォルダが出来ていた。
(laravel5.7を試してるのに間違ってlaravel55というフォルダ名にしてしまった!)
4.ドキュメントルートの設定
自PC上のhttpd.confを編集(抜粋)
DocumentRoot "C:\project_xampp\htdocs\laravel55\entry\public"
\
初期表示確認
5.ブラウザで
http://localhost
初期画面があっさり表示される。
インストール完了!
これは、下記テンプレートファイルが表示さているようである。
/entry/resources/view/welcome.blade.php
データベース準備
DB環境を整える。ますはDBを作成。
自分のPCには既にMySQLが入っているので、それを使ってみる。
入ってない人はPostgreSQLでもいいので事前に使える環境にしておく必要がありますが、
そのあたりはここでは割愛します。
まずは、テスト用のデータベースを作成。
お試しなんで、
$mysql -u root
でログインし、
mysql> create database laraveldb;
とでもして、データベース作成完了。
laravelのDB環境を設定
/entry/.env
というファイルがあるので、それを編集する。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraveldb <-----これ(DB名)
DB_USERNAME=root <-----これ(DBアカウント)
#DB_PASSWORD=secret
上記設定で終わり
モデルやコントローラを準備
カレントディレクトリを
/entry
にして、
php artisan make:model Entry -m -c -r
とりえあず、上記をそのまま実行!
すると、
・マイグレーションファイル
/entry/database/migrations/2018_10_30_075410_create_entries_table.php
・モデル
/entry/app/Entry.php
・コントローラ
entry/app/Http/Controllers/EntryController.php
が自動で生成されるようだ!
DBにカラムを追加
/entry/database/migrations/2018_10_30_075410_create_entries_table.php
このファイルの中を見てみると、既にidと日時のがセットされていたので、
public function up()
{
Schema::create('entries', function (Blueprint $table) {
$table->increments('id');
$table->increments('name'); <----これ
$table->timestamps();
});
}
のようにnameを追加する。
そして、
php artisan migrate
を実行!
MySLQのDB(laraveldb)の中をのぞいてみたら、テーブルが作成されていた!
MariaDB [(none)]> use laraveldb;
Database changed
MariaDB [laraveldb]> show tables;
+---------------------+
| Tables_in_laraveldb |
+---------------------+
| entries |
| migrations |
| password_resets |
| users |
+---------------------+
4 rows in set (0.00 sec)
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(191) | NO | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
ルート設定
/entry/routes/web.php
このファイルを、下記のように修正する
Route::get('/', function(){return redirect('/entries');});
Route::post('/entries', 'EntryController@store');
コントローラ設定
/entry/app/Http/Controllers/EntryController.php
public function store(Request $request)
{
$entry = new Entry;
$entry->name = request('name');
$entry->save();
return redirect('/entries');
}
これを追加
ビューの作成
resources/views/entries.blade.php"
@extends('layout')
@section('content')
<h1>応募フォーム</h1>
<form action="/entries" method="POST">
{{ csrf_field() }}
<label for="entry">名前</label>
<input type="text" name="name" id="entry-name">
<button type="submit">登録</button>
</form>
@endsection
※{{ csrf_field() }}
↑ これは、CSRF対策としてトークンを埋め込むために必要のようだ。
モデルファイル
app/Entry.php
特に手は入れない
動作確認
http://localhost/entries
taroと入力して登録ボタンを押した後、
DBの中身を確認してみる。
MariaDB [laraveldb]> select * from entries;
+----+------+---------------------+---------------------+
| id | name | created_at | updated_at |
+----+------+---------------------+---------------------+
| 1 | taro | 2018-10-31 11:59:41 | 2018-10-31 11:59:41 |
+----+------+---------------------+---------------------+
1 row in set (0.00 sec)
taro と登録されていた
次回以降の予定ですが、
バリデーションの実装
確認、完了画面の実装
と進んでみようと思います。
おわり