甘党エンジニアの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;
ビューファイルが表示されたら完成!