環境構築
PHPはMAMPものを利用(anyenvからだとハマったので割愛・・・)
/usr/local/binあたりにシンボリックリンク
複数のPHP環境があるとartisan実行時にこける
post-update-cmdにPHPのパスを絶対指定で書く
php artisan serveでローカルサーバ動かす場合はPHP >= 5.4で
Artisanからmigrate
SQLiteでmigrate
app/config/database.php
'default' => 'sqlite'
特に変更しなければ、production.sqliteで作成
$ php artisan migrate
でスキーマができてればSQLiteファイル生成
Seederを使って初期データ作成
モデルに個別のSeederを作成
app/database/seeds/UserTableSeeder.php
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
User::create(array(
'email' => 'info@example.com',
'name' => 'Test Man'
));
}
}
モデルごとのSeederを呼び出し
app/database/seeds/DatabaseSeeder.php
<?php
class DatabaseSeeder extends Seeder {
public function run()
{
Eloquent::unguard();
$this->call('UserTableSeeder');
}
}
$ db:seed
で実行
$ php artisan db:seed
コントローラー周り
JSONを返す
app/routes.php
Route::get('users.json', function()
{
$users = User::all();
return Response::json($users);
});
ルーティング
バリデーション
宣言的に書ける
public static $rules = array(
'name' => 'required|max:50',
'kana' => 'required|katakana|max:50',
'email' => 'required|email',
'interview1' => 'required|date_format:Y-m-d|after:+3 days|before:+30 days',
'interview2' => 'required|date_format:Y-m-d|after:+3 days|before:+30 days|different:interview1',
'resume' => 'required|mimes:pdf,zip|max:10000',
'message' => 'max:65535',
);
afterとbeforeの日付指定が便利。strtotime()の形式で記述できる。
max, min, sizeはコンテクストで変わる。文字列なら文字数、ファイルならファイルサイズ。