【Laravel入門②】PHPフレームワーク Laravelの使い方(DB・MVC構築編)

甘党エンジニアのkanjiです。

前回の続き、PHPのフレームワーク「Laravel」を使い学習を進めていく。

前回の記事(Laravel環境構築編)
【Laravel入門】PHPフレームワーク Laravelの使い方(環境構築編)

今回はデータベースの設計から、MVCモデルの各パート(モデル・ビュー・コントローラ)の構築までを行った。

データベースの設計

MEMO
今回は細かい設定が不要ですぐに使えるSQliteを使用する。

SQLiteのデータベースファイルの作成を行う。

databaseの中に「database.sqlite」ファイルを作成。
※ターミナルから「$ touch database/database.sqlite」コマンドでもOK。

databaseと接続できるように「.env」ファイルを編集する。

DB_CONNECTION=sqlite
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=laravel
#DB_USERNAME=root
#DB_PASSWORD=

デフォルトではDB_CONNECTIONがmysqlになっているため、sqliteに修正。
その他のDB接続用の項目は使用しないため、コメントアウトする。

マイグレーションファイルの実行

$ php artisan migrate

新しくマイグレーションファイルを作成し立ち上げる。

Laravelが標準でもっているマイグレーションファイル「users」・「password_resets」が立ち上がるが、放置しても消してもOK。

テーブルの作成

$ php artisan make:migration create_tests(テーブル名)_table

database/migrations直下にマイグレーションファイルができる。

ちなみにテーブルを消すには下記コマンドを打てばOK

$ php artisan migrate:rollback

作成されたテーブルにカラムの追加

public function up()
    {
        Schema::create('tests', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');←カラムを追加していく
            $table->string('content');←カラムを追加していく
            $table->timestamps();
        });
    }
public function up()とは?
マイグレーションファイルを実行した時に生成される。
public function down()はrollbackで戻せるスクリプト

カラムを追加した後は、再びphp artisan migrateを実行する。

テストデータ(seeds)を入れる

下記コマンドでseedsファイルを作成し、テストデータを入れる。

$ php artisan make:seeder Tests(テーブル名)TableSeeder

seedsファイルの中に「テーブル名TableSeeder.php」が作成されるので、データを入れるための命令を書いていく。

 public function run()
    {
        DB::table('tests')->insert([
            'title'=>'entry01',
            'content'=>'hello',
            'created_at'=>date('Y-m-d H:i:s'),
            'updated_at'=>date('Y-m-d H:i:s')
        ]);
        DB::table('tests')->insert([
            'title'=>'entry02',
            'content'=>'Good Morning',
            'created_at'=>date('Y-m-d H:i:s'),
            'updated_at'=>date('Y-m-d H:i:s')
        ]);
        DB::table('tests')->insert([
            'title'=>'entry03',
            'content'=>'Good Evening',
            'created_at'=>date('Y-m-d H:i:s'),
            'updated_at'=>date('Y-m-d H:i:s')
        ]);
    }
}

seedsディレクトリの中の「DatabaseSeeder.php」に、下記コードを追加

 public function run()
    {
        $this->call(TestsTableSeeder::class);←追加
    }

seedsを実行

$ php artisan db:seed

データベース内にカラムが追加される。

次はいよいよ、モデル・コントローラ・ビューの作成に入る。

モデルの作成

下記コマンドでモデルを作成

$ php artisan make:Model Tests(モデル名)

コントローラの作成

下記コマンドでコントローラを作成

$ php artisan make:controller Test(コントローラ名)Controller

app/Http/Controllerの中に「TestController.php」ができるので、下記コードを記述

<?php
namespace App\Http\Controllers; use App\Test; use Illuminate\Http\Request; class TestsController extends Controller { public function index(){ $tests = Test::all(); return view('tests.index', ['tests'=>$tests]);
    }

    public function view($id){
        $test = Test::findOrFail($id);

        return view('tests.index', ['tests'=>$tests]);
    }
}

ビューファイルの作成

recouses/views ディレクトリの中に「tests」ディレクトリを作成

tests ディレクトリの中に「index.blade.php」ファイルを作成。DOCTYPE〜の記述とbodyタグ内に下記コードを記述

@foreach ($tests as $test)
{{ $test->title }}
@endforeach

ルーティングの作成

routes/web.php ファイルに下記コードを記述

Route::get('/','TestsController@index');
MEMO
デフォルトで記述されているview(‘welcome’)の記述は消してOK

ターミナルからサーバを立ち上げる

$ php artisan serve;

ビューファイルが表示されたら完成!