8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel を試してみる

Last updated at Posted at 2018-10-31

はじめに

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

初期表示確認

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

次回以降の予定ですが、
バリデーションの実装
確認、完了画面の実装
と進んでみようと思います。

おわり

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?