続いてクイックスタートにMySQLの設定をしろと言われたので、その通りにする(あのクイックスタート、全然親切じゃないね)。
app/config/database.php がデータベースの設定関連のファイルなので編集する。今回はMySQLを使うので、driverがmysqlになっている部分を確認。ユーザ名やパスワードを記載した。
マイグレーション
まずはマイグレーションを作成するため、次のようなコマンドを打った。
[bash]php artisan migrate:make create_users_table[/bash]
すると、「2014_12_28_104241_create_users_table.php」なるファイルが…。え、日付入ってますけど大丈夫?いいの?と思いつつも、クイックスタートが言うならまぁ…いいのかな?と思ってそのまま続けます。
usersテーブルのマイグレーション定義
次のように定義しました。
[php]<?php
use Illuminate\Database\Schema\Blueprint;
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(‘username’, 20);
$table->string(‘password’, 255);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop(‘users’);
}
}[/php]
Macでマイグレーション実行時にエラー
php artisan migrate、とタイプするも、実行時にエラー。
[bash]SQLSTATE[HY000] [2002] No such file or directory[/bash]
symfonyでも前にMySQLのソケットが見つからなくてこのエラーがでたので、多分そんなかんじかなーと思って検索、StackOverflowさまさまです。
Setting up Laravel on a Mac php artisan migrate error: No such file or directory
そういうわけで、app/config/database.phpを編集。中略ですが、次のようにunix_socketを設定。
[php] ‘mysql’ => array(
‘driver’ => ‘mysql’,
‘host’ => ‘localhost’,
‘unix_socket’ => ‘/tmp/mysql.sock’,
‘database’ => ‘wiki’,
‘username’ => ‘USERNAME’,
‘password’ => ‘PASSWORD’,
‘charset’ => ‘utf8’,
‘collation’ => ‘utf8_unicode_ci’,
‘prefix’ => ”,
), [/php]
今度はmigrateコマンドもばっちりうまくいった。
[sql]mysql> desc users;
+————+——————+——+—–+———————+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+——————+——+—–+———————+—————-+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(20) | NO | | NULL | |
| password | varchar(255) | NO | | NULL | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+————+——————+——+—–+———————+—————-+
5 rows in set (0.01 sec)[/sql]
usernameなどの第二引数が文字列長ですね。そして、$table->timestamps();とすることでsymfony1.4などによくあるTimestampable的なものになるみたい。ほーほー