目次
今回のゴール
今回はComposerからLaravelをインストールし、webサーバーで表示され、データベースの構築が行えるまで。(REST APIなので本当はwebサーバーで表示される必要はないですが…)
Laravelのインストール
以前のエントリーでPHPとLaravelをWindowsにインストールしているので、そこからLaravelをインストール作業を来ないます。インストール前に
Windows版のPHPを入れたのですが、php.iniの設定を一部変更する必要があります。
1 |
extension = php_fileinfo.dll |
これを記述しておいてください
また、実際のサーバーとWindowsのPHPのバージョンはできるだけ合わせておいた方が安全です。
インストールを行う
インストールしたい場所でターミナルを開き
1 |
composer create-project laravel/laravel --prefer-dist laravel-test |
と入力すると自動的にlaravel-testというフォルダを生成され、Laravelをインストールしてくれます。
その後は[.env]ファイルが生成されていることを確認し、作成されたフォルダに入り、
1 |
php artisan key:generate |
をターミナル上から入力してください。
もし[.env]ファイルがない場合は[.env.exsample]を[.env]にコピーしてください。
フォルダのパーミッションを確認する
「/storage/logs」「/storage/framework/」内の仮想フォルダを確認し、apacheやnginxが書き込める権限に変更します。webサーバーにアップし、確認する
https://xxxxxxxxx.xxxx/laravel-test/public/上記の画面が表示されればOKです。お疲れ様でした。
データベースの設定を行う。
Laravelのマイグレーションを使用してテーブルなどを設定します。環境設定にデータベース接続情報を記述する
[.env]にある項目にデータベース接続情報を記述する
1 2 3 4 5 6 |
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD= |
【注意】基本的に.envはサーバーに保管するのでGitやSubversionなどのファイル管理に含むかどうか気をつけましょう
元々のマイグレーションファイルは不要なので削除します。
マイグレーションファイルの作成
1 2 |
$ php artisan make:migration create_users_table Created Migration: 2022_03_11_081637_create_users_table |
「php artisan make:migration create_users_table」と入力すると「database/migrations」に新たにマイグレーションファイルが作成されます。
マイグレーションファイルの編集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } } |
up()関数でテーブルのクリエイト、down()関数でテーブルの削除となるので、テーブルのフィールドを変更します。
1 2 3 4 |
Schema::create('users', function (Blueprint $table) { $table->id(); $table->timestamps(); }); |
を
1 2 3 4 5 6 |
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->date('entry_date'); $table->string('name', 128); $table->timestamps(); }); |
に変更しました。
なんとなく感覚でわかるかと思いますが、string = varchar型で、timestampsと記述すると自動的に[create_at][updated_at]をtimesampで作成してくれます。
これをテーブルごとに作成し、描きのコマンドで実行すると
1 2 3 |
$ php artisan migrate Migrating: 2022_03_11_081637_create_users_table Migrated: 2022_03_11_081637_create_users_table (7.14ms) |
という感じになります。
記述が間違っているとエラーになりますのでご注意ください。
phpMyAdminで見てみると
なんと簡単に作成できました。
フィールドを追加する場合
運用している上でフィールドを追加したい場合がありますが、その場合もマイグレーションで作成できます。
1 2 |
$ php artisan make:migration add_users_table_add_coloumns --table=users Created Migration: 2022_03_11_084714_add_users_table_add_coloumns |
ファイル名はわかりやすくしています。
すると先ほどと同様にマイグレーションファイルが生成されるので、以下のように編集を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class AddUsersTableAddColoumns extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { $table->string('email')->nullable()->after('name'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { if (Schema::hasColumn('users', 'email')){ $table->dropColumn('email'); } }); } } |
up()関数でnameの後ろにemailを追加しています。
ちなみにdown()関数にはemailを削除する記述をしています。
これを同様に実行すると
1 2 3 |
$ php artisan migrate Migrating: 2022_03_11_084714_add_users_table_add_coloumns Migrated: 2022_03_11_084714_add_users_table_add_coloumns (4.36ms) |
となり、
nameが追加されます。
ちなみに追加したものを戻したい場合は
1 2 3 |
$ php artisan migrate:rollback Rolling back: 2022_03_11_084714_add_users_table_add_coloumns Rolled back: 2022_03_11_084714_add_users_table_add_coloumns (6.67ms) |
と「:rollback」をつけることで作成したファイルのdown()関数を実行します。
少しややこしいですが
- 2022_03_11_081637_create_users_table
- 2022_03_11_084714_add_users_table_add_coloumns
例の場合はテーブル作成→カラム追加となるので、ロールバックを行うと「カラム削除→テーブル削除」となります。(もちろんdown()関数にきちんと処理を書いている必要がありますが)
最後に
本当はxamppなどの説明を行った方がよかったかなと思いますが、とりあえずComposerからインストールして色々とできるところまで進めました。テーブル設計は本当に楽にできるなと思う反面、レンタルサーバーなどでどこまで自由に作れるのかが少し心配な側面があります。
次回はいよいよREST APIとして実装できればいいなと思います。