さてLaravelをインストールしてみたものの使い方はSymfonyをwrapしているので、似たようなものと思っているけど実際のところは分からないので用意されている
チュートリアルをやってみる事にした。内容すっごい分かりにくいけど。
DBのテーブルを作成する。
SymfonyやRailsと同じようにMigrationを行ってデータベース管理をする。tasksテーブルを作成するためのMigrationの雛形を作成する。
$ php artisan make:migration create_tasks_table --create=tasks
Created Migration: 2016_03_10_084136_create_tasks_table
artisanの使用方法についてはこんな感じ。
$ php artisan make:migration <Migration File Name> --create=<Table Name>
これを実行するとProject/database/migrations配下に
2016_03_10_084136_create_tasks_table.phpというようなファイルが作成される。中身はこんな感じ。
increments('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('tasks');
}
}
レコードのIDとタイムスタンプのカラムがデフォルトで設定されているので、これにタスク名を格納するためのカラムを追加で設定する。こんな感じ。ハイライト部分が追記した部分。
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
このMigrationを実行する前に。やっておく事が2つ。
- データベースの作成
- .envとconfig/database.phpへのデータベース設定
今回はMySQLを利用し、データベースは'Laravel_tutorial'として、mysqlに対して事前に作成しておく。
データベース設定はユーザはめんどくさいのでrootを使った。.envとconfig/database.phpに両方設定しておく必要があるが、.envは開発用、.envに設定がない場合はconfig/database.phpの値が利用される。.envに設定されている値がなければconfig配下の設定ファイルの値が利用される。
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Laravel_tutorial
DB_USERNAME=root
DB_PASSWORD=password
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'Laravel_tutorial'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'password'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
これが終わったらようやくMigrateできる。
php artisan migrate
Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2016_03_10_084136_create_tasks_table
MySQLでデータベースLaravel_tutorialにtasksテーブルが出来ているかみてみる。
mysql> show tables;
+----------------------------+
| Tables_in_Laravel_tutorial |
+----------------------------+
| migrations |
| password_resets |
| tasks |
| users |
+----------------------------+
4 rows in set (0.00 sec)
mysql> desc tasks;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.15 sec)
出来ているのを確認したらテーブル
tasksへアクセスするためのモデル
Taskを作成する。
$ php artisan make:model Task
Model created successfully.
テーブル名は複数形、モデルは単数形という暗黙のルールがあるので明示的にtasksテーブルを指定せずともTaskというモデルはtasksテーブルを参照するモデルがapp配下に作成される。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
//
}
疲れてきた。