とりあえずは、公式のチュートリアルを参考に
-> http://laravel.com/docs/quick
まずは、Mysqlに対してのMIGRATEなど
テーブルを作成してみよう
プロジェクトディレクトリ以下まで移動してから、色々やっていきます。
php artisan migrate:make create_users_table
create_users_tableってクラスのファイルを作る!
app/database/migrations以下にファイルが
$ ls -la app/database/migrations
drwxr-xr-x 2 schoo wheel 4096 Jan 30 14:36 .
drwxr-xr-x 4 schoo wheel 4096 Jan 29 17:36 ..
-rw-r--r-- 1 schoo wheel 0 Jan 29 17:36 .gitkeep
-rw-r--r-- 1 root root 598 Jan 30 14:27 2014_01_29_164142_create_users_table.php
年月日と時間がファイル名の先頭についてる
早速編集してみます
<?php
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function($table)
{
$table->increments('id');
$table->string('email')->unique();
$table->string('name');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
upにはmigrate実行時に走る処理を
downにはrollback時に走る処理を
準備が出来たので、早速実行してみます。
$ php artisan migrate
完了したので、mysqlを確認してみます。
mysql> desc users;
+------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| email | varchar(255) | NO | UNI | NULL | |
| name | varchar(255) | NO | | NULL | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+------------+------------------+------+-----+---------------------+----------------+
お、できてる!
カラム追加してみよう
次は、カラムの追加をしてみます。
$ php artisan migrate:make modify_users_table
今回もapp/database/migrations以下にファイルができています。
僕の場合は、2014_01_30_052837_modify_users_table.php
早速編集
public function up()
{
Schema::table('users', function($table)
{
$table->string('company');
});
//
}
public function down()
{
//
}
usersテーブルに、varcharでcompanyを作成する。
$ php artisan migrate
mysql> desc users;
+------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| email | varchar(255) | NO | UNI | NULL | |
| name | varchar(255) | NO | | NULL | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| company | varchar(255) | NO | | NULL | |
+------------+------------------+------+-----+---------------------+----------------+
追加された。
消してみよう
最後は、消してみてみましょう
$ php artisan migrate:make delete_company_users_table
今回もapp/database/migrations以下にファイルができています。
僕の場合は、2014_01_30_053153_delete_company_users_table.php
早速編集
public function up()
{
Schema::table('users', function($table)
{
$table->dropColumn('company');
});
//
}
public function down()
{
Schema::table('users', function($table)
{
$table->string('company');
});
//
}
実行
$ php artisan migrate
確認
mysql> desc users;
+------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| email | varchar(255) | NO | UNI | NULL | |
| name | varchar(255) | NO | | NULL | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+------------+------------------+------+-----+---------------------+----------------+
結構使い勝手がいいかんじです!
次はORM
実は、上の手順を全て行っていると
app/models/User.php
というファイルが作成されていますので、今回は
Controller、View、Routeファイルだけ触ります。
Controllerを作ってみる
app/controllers/UserController.php
<?php
class UserController extends BaseController {
public function showUsers()
{
//users全件取得
$users = User::all();
//usersという名前で、view tenplateに渡しますよ
return View::make('users')->with('users', $users);
}
}
これだけです。
次は、viewテンプレート
今回の内容では、不要ですがレイアウトファイルを作ります
$ vim app/views/layout.blade.php
<html>
<body>
<h1>Laravel Quickstart</h1>
@yield('content')
</body>
</html>
レイアウトファイル、テンプレートの使い方に関しては、今回は省略(というより、調べてない。。)
次テンプレート
$ vim app/views/users.blade.php
@extends('layout')
@section('content')
@foreach($users as $user)
<p>{{ $user->name }} {{ $user->email }}</p>
@endforeach
@stop
レイアウトに、contentセクションにforeachなどなど展開する。
foreachの箇所で、Controllerで定義したusersを使用しています。
これでテンプレートも完了
あとは、リクエストに対応する為、routeファイルを編集するだけ
$ vim app/routes.php
Route::get('users', 'UserController@showUsers');
これであとは、ブラウザから
http://....../usersとアクセスするそれだけ
ORMもDBMIGRATEも複雑な手順踏まなくていいという分いいかもしれない
あとは、キャッシュとか色々調べてからになるけど