PHP
Laravel

Laravel を試してみる


はじめに

日本での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"

DOS窓でこれを入力するだけ。

laravel11.jpg


プロジェクト生成

3.laravelコマンドを使ってプロジェクト生成

laravel new entry

composer create-projectによる作成方法もあるようですが、

とりあえずlaravelコマンドで実施。

laravel22.jpg

C:\project_xampp\htdocs\laravel55\

ここをカレントディレクトリとして実行したら、この配下にentryというディレクトリが生成され、

中をみると多数ファイルやフォルダが出来ていた。

(laravel5.7を試してるのに間違ってlaravel55というフォルダ名にしてしまった!)

laravel25.jpg

4.ドキュメントルートの設定

自PC上のhttpd.confを編集(抜粋)


DocumentRoot "C:\project_xampp\htdocs\laravel55\entry\public"
<Directory "C:\project_xampp\htdocs\laravel55\entry\public">


初期表示確認

5.ブラウザで

http://localhost
を実行

初期画面があっさり表示される。

インストール完了!

laravel44.jpg

これは、下記テンプレートファイルが表示さているようである。

/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

laravel88.jpg

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 と登録されていた

次回以降の予定ですが、

バリデーションの実装

確認、完了画面の実装

と進んでみようと思います。

おわり