- 投稿日:2019-07-16T23:43:26+09:00
AWS ELBでSSL化した際にLaravelのメール認証(EmailVerification)ができなくなった話
起きたこと
ELBでSSL化を行った際に、Laraveのメール認証が動かなくなってしまった。
エラーを探ってるとこんなメッセージが
This request has been blocked;. the content must be served over HTTPS.
結論
ここに記載してあるとおり
TLS/SSL証明を行うロードバランサの裏でアプリケーションが実行されている場合は別で対応が必要みたいです。Tip!! AWS Elastic Load Balancingを使用している場合、$headersの値は
Request::HEADER_X_FORWARDED_AWS_ELBに設定する必要があります。$headersで使用する
内容の詳細は、Symfonyのtrusting proxiesドキュメントを参照してください。
- 投稿日:2019-07-16T23:13:13+09:00
Laravelのマイグレーション履歴をリセットして、全テーブルを作り直す手順
マイグレーションやロールバックを繰り返しているうちに、テーブルやカラムの構成が混乱してきたので、初めから全テーブルを作り直したい、マイグレーションの履歴も削除したい、というような場面で。
手順
- (必要であれば)以下バックアップをとっておく
- 既存のテーブル
- database/migrations配下の各マイグレーションファイル
- 既存のテーブルを全て削除する
- database/migrations配下のマイグレーションファイルを全て削除
- 次のコマンドでバージョン管理用migrationテーブルを作成
php artisan migrate:install
- (バックアップ済があれば)migrations/配下にファイルを再び配置
- migrate実行
php artisan migrate
以上でテーブルとマイグレーションが初期化される。
上のようなリセット作業を減らすためにも、マイグレーションファイルはロールバックすることを考慮して、upメソッドだけではなく、downメソッドも適切に記述しよう。
- 投稿日:2019-07-16T22:58:25+09:00
MacでLaravel5.8導入 導入の下準備_仮想環境構築
前提
下記のページ(公式ではない?)が非常によくできてるので読めばだいたいわかる
https://readouble.com/環境:Mac
VirtualBox, Vagrant導入済み導入前の下準備
仮想環境の設定
Homestead というVagrant仮想環境を使うと非常に都合が良いらしい
# Vagrantに、HomesteadのBoxイメージをインストール $ vagrant box add laravel/homestead # homeディレクトリにhomesteadのリポジトリをクローン(自分のLaravelの全プロジェクトをホストしておくHomestead Boxを用意するためらしい) $ git clone https://github.com/laravel/homestead.git ~/Homestead # 最新のmasterではなく安定版のreleaseブランチに変更 $ cd ~/Homestead $ git checkout release # 設定ファイルを作成(Homestead.yaml) $ bash init.shHomestead.yamlの設定
下記以外は特殊な設定がなければ初期設定のままでOK
# 仮想環境に同期したいローカル環境のディレクトリを記載する # map: ローカル開発環境側 to: 仮想環境側 folders: - map: ~/myProject/laravelTest to: /home/vagrant/laravelTestホスト名の解決
hostsファイルに下記を追加する。192.168.10.10は、IPアドレスの初期値
192.168.10.10 homestead.test
Vagrantの起動
Homesteadの設定が一通り終わったので、Vagrantを起動する。
# Homesteadディレクトリで $ vagrant upブラウザで、
homestead.test
にアクセスして表示されればOK仮想環境へのSSH接続
# Homesteadディレクトリで $ vagrant sshアクセスが成功し、ホームディレクトリに同期させたかったディレクトリ, ファイルがあればOK
Homesteadディレクトリ以外からもssh接続できるようにするためには下記を.bash_profileに追加する。function homestead() { ( cd ~/Homestead && vagrant $* ) }これで他のディレクトリからも
$ homestead ssh
でssh接続できるようになる。(他のvagrantコマンドも)
- 投稿日:2019-07-16T22:58:25+09:00
MacでLaravel5.8導入 + 仮想環境構築
前提
下記のページ(公式ではない?)が非常によくできてるので読めばだいたいわかる
https://readouble.com/環境:Mac
Homebrew, VirtualBox, Vagrant導入済みまずはComposerの導入
Homebrewを利用
すぐにバージョン古くなってるのでまずはアップデート確認# ステータスチェック $ brew doctor # 問題があれば極力解決しておく # アップデート $ brew update # アップグレード $ brew upgrade # エラーが出てなさそうなら、composerのインストール $ brew install composer # composerで、Laravelインストーラをダウンロード $ composer global require laravel/installerパスを通してプロジェクト作成
laravelコマンドのパスを通す
.bash_profileに下記を追加
export PATH=$PATH:~/.composer/vendor/bin
プロジェクトを作成したい場所に移動してnewコマンド実行
$ cd ~/myProject $ laravel new laravelTestこれでいったんプロジェクトの作成は完了。
仮想環境の設定
Homestead というVagrant仮想環境を使うと非常に都合が良いらしい
# Vagrantに、HomesteadのBoxイメージをインストール $ vagrant box add laravel/homestead # homeディレクトリにhomesteadのリポジトリをクローン(自分のLaravelの全プロジェクトをホストしておくHomestead Boxを用意するためらしい) $ git clone https://github.com/laravel/homestead.git ~/Homestead # 最新のmasterではなく安定版のreleaseブランチに変更 $ cd ~/Homestead $ git checkout release # 設定ファイルを作成(Homestead.yaml) $ bash init.shHomestead.yamlの設定
下記以外は特殊な設定がなければ初期設定のままでOK
Homestead.yaml# 仮想環境に同期したいローカル環境のディレクトリを記載する # map: ローカル開発環境側 to: 仮想環境側 folders: - map: ~/myProject/laravelTest to: /home/vagrant/laravelTestホスト名の解決
hostsファイルに下記を追加する。192.168.10.10は、IPアドレスの初期値
192.168.10.10 homestead.test
Vagrantの起動
Homesteadの設定が一通り終わったので、Vagrantを起動する。
# Homesteadディレクトリで $ vagrant upブラウザで、
homestead.test
にアクセスして表示されればOK仮想環境へのSSH接続
# Homesteadディレクトリで $ vagrant sshアクセスが成功し、ホームディレクトリに同期させたかったディレクトリ, ファイルがあればOK
Homesteadディレクトリ以外からもssh接続できるようにするためには下記を.bash_profileに追加する。function homestead() { ( cd ~/Homestead && vagrant $* ) }これで他のディレクトリからも
$ homestead ssh
でssh接続できるようになる。(他のvagrantコマンドも)おしまい
- 投稿日:2019-07-16T18:57:44+09:00
Laravelコレクションのpluck()メソッドを活用しよう
環境
Laravel Framework 5.8
PHP 7.2やりたいこと
DBからこのようなデータを取得して、idがキー、カラムデータがバリューとなる、配列を作りたくなることがよくある。
$collection = collect([ ['id' => 1, 'name' => 'ジャック鈴木', 'company' => 'Five Needs'], ['id' => 2, 'name' => 'Umichiko' , 'company' => 'Five Needs'] ]);私はこれまで、このようなときarray_column()を利用して配列を生成していた。
$user_array = array_column($collection->all(),null,"id");スマートなやり方
Laravelコレクションの機能であるpluck()メソッドを利用することで同様のことがより簡潔に実現できる。
$collection = collect([ ['id' => 1, 'name' => 'ジャック鈴木', 'company' => 'Five Needs'], ['id' => 2, 'name' => 'Umichiko' , 'company' => 'Five Needs'] ]); /* * nameの値だけを取得できる。 */ var_dump($collection->pluck("name")); //class Illuminate\Support\Collection#331 (1) { // protected $items => // array(2) { // [0] => // string(18) "ジャック鈴木" // [1] => // string(8) "Umichiko" // } //} /* * キーがidでバリューがnameのコレクションを生成 */ var_dump($collection->pluck("name", "id")); //class Illuminate\Support\Collection#331 (1) { // protected $items => // array(2) { // [1] => // string(18) "ジャック鈴木" // [2] => // string(8) "Umichiko" // } //} /* * キーがidでバリューに全データが入ったコレクションを生成 */ var_dump($collection->pluck(null, "id")); //class Illuminate\Support\Collection#331 (1) { // protected $items => // array(2) { // [1] => // array(3) { // 'id' => // int(1) // 'name' => // string(18) "ジャック鈴木" // 'company' => // string(10) "Five Needs" // } // [2] => // array(3) { // 'id' => // int(2) // 'name' => // string(8) "Umichiko" // 'company' => // string(10) "Five Needs" // } // } //} /* * array_columnでも同様のことができる */ var_dump(array_column($collection->all(),null,"id")); //array(2) { // [1] => // array(3) { // 'id' => // int(1) // 'name' => // string(18) "ジャック鈴木" // 'company' => // string(10) "Five Needs" // } // [2] => // array(3) { // 'id' => // int(2) // 'name' => // string(8) "Umichiko" // 'company' => // string(10) "Five Needs" // } //}
- 投稿日:2019-07-16T18:50:35+09:00
Laravelのseederを冪等にする
seederを冪等に作成しておかないと、重複してはいけないデータが存在した場合に、2度目の実行時にエラーが発生してしまいます。
そのため、データがなければ作成してすでに存在していれば作成をしないようにするような書き方について調べました。
そもそも冪等とは
wikipediaによると
ある操作を1度行っても複数回行っても同じ効果となることを言う。特に、何回行ってもエラーや不整合の状態が変わらない操作を指す。
firstOrCreateを使う
firstOrCreateを使用することで、データが存在すればそれを取得するし、なければ新しく作成してくれます。
firstOrCreateメソッドは指定されたカラム/値ペアでデータベースレコードを見つけようします。モデルがデータベースで見つからない場合は、最初の引数が表す属性、任意の第2引数があればそれが表す属性も同時に含む、レコードが挿入されます。
firstOrCreateで作成されたのかどうかはwasRecentlyCreatedで判定をする
モデルのインスタンスの
wasRecentlyCreated
で判定ができます。// 初回の実行 >>> $user = App\User::firstOrCreate(['name' => 'hoge', 'email' => 'hoge2@hoge.com', 'password' => 'hoge2']); => App\User {#2901 name: "hoge", email: "hoge2@hoge.com", updated_at: "2019-07-15 23:11:35", created_at: "2019-07-15 23:11:35", id: 53, } // 作成されたのでtrueになる >>> $user->wasRecentlyCreated; => true // 再度実行して取得する >>> $user = App\User::firstOrCreate(['name' => 'hoge', 'email' => 'hoge2@hoge.com', 'password' => 'hoge2']); => App\User {#2900 id: 53, name: "hoge", email: "hoge2@hoge.com", created_at: "2019-07-15 23:11:35", updated_at: "2019-07-15 23:11:35", stripe_id: null, card_brand: null, card_last_four: null, trial_ends_at: null, } // 作成されていないのでfalseになる >>> $user->wasRecentlyCreated; => falseこれらを組み合わせてseederを作成する
一部分ですが、複数回実行するとデータが重複してエラーになる箇所は、
firstOrCreate
で作成をして、wasRecentlyCreated
がtrueの場合のみそれにひもづくデータを作成するようにすれば、何度実行しても同じ結果となります。$user = User::firstOrCreate(['name' => 'hoge']); // 今回作成された場合にはtrueになる if ($user->wasRecentlyCreated) { // userにひもづくデータをここで作成する }
- 投稿日:2019-07-16T13:58:51+09:00
【GCE】Dokku に Laravel 環境を作る
Dokku のお手軽さが楽しくなってしまい、 Laravel も Dokku で運用したくなったのでメモ
Laravel プロジェクトのインストールと前準備
Laravel のインストール
composer
のインストールについては「Laravel 4.2 Laravelクイックスタート」をみてください。
composer
を使って Laravel をインストールするbashcomposer create-project laravel/laravel <プロジェクト名> --prefer-dist
APP_KEY の作成
bashcd <プロジェクト名> # プロジェクトディレクトリに移動 php artisan key:generate
/<プロジェクトディレクトリ>/.env
に記述されているbase64:
から始まるキーをコピーしておくDokku をさわる
GCE に接続する
ssh
で GCE に接続するbashssh -i <PATH_TO_PRIVATE_KEY> <USERNAME>@<EXTERNAL_IP_ADDRESS>
もしくは、
gcloud
を利用している場合は
「インスタンス>リモートアクセス>gcloud
コマンドを表示」からコピペして接続GCE に Dokku アプリを作成する
laravel-dokku-app
って名前のプロジェクトを作ることにするbashdokku apps:create laravel-dokku-appAPP_KEY を Dokku に設定する
bashdokku config:set laravel-dokku-app <APP_KEY>
APP_KEY
=> 「APP_KEY の作成」の項目でコピーしたやつをコピペするProcfile と BUILDPACK_URL を設定する
Dokku は何も設定しないと Node.js プロジェクトと認識されるらしいので、
PHP を扱うためにProcfile
とBUILDPACK_URL
とかいうやつの設定をするProcfile の作成
ローカル環境の Laravel プロジェクトのルートでやる
bashecho 'web: vendor/bin/heroku-php-apache2 public/' >> ProcfileBUILDPACK_URL の設定
GCE サーバー内でやる
bashdokku config:set laravel-dokku-app BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-phpLaravel を Dokku にデプロイする
bashgit init git add . git commit -m "first deploy" git remote add dokku dokku@<外部IPアドレス>:laravel-dokku-app git push dokku master
外部IPアドレス
=> インスタンス>ネットワークインターフェース>外部 IPの下にある数字をコピペおわり
メモ: ポートを指定する場合はこうする
bashgit remote add dokku ssh://dokku@<外部IPアドレス>:<ポート番号>/laravel-dokku-app参考
How to deploy Laravel app on Dokku
https://jiegersblog.blogspot.com/2017/06/how-to-deploy-laravel-app-on-dokku.htmlsetting permissions problem
https://github.com/dokku/dokku/issues/353[Laravel5.5] APP_KEY の行方を追う
https://qiita.com/yk2220s/items/dcbf54c6d1f33a0cb06f
- 投稿日:2019-07-16T00:28:44+09:00
Laravel[業務効率化]自動migrationファイル作成ツールをつくってみた話
作成するにあたっての動機
今まで、Laravelを使ったプロジェクトにかかわらせていただくことがあり、DB設計を終えた後に、sqlファイルやddlファイルを自動で作ってくれるものはあるのに、それを元にマイグレーションファイルを自動で作ってくれるものがないので、大変だぁと思い、取り組んでみました。
こうしたほうがいい(特にカプセル化・命名などなど)などの意見をぜひほしいです。新米のため、すごく助かります。もしよろしければ、お願いいたします。
最終目的
すでに作成されているテーブルからマイグレーションファイルを自動で作れるようにします。
準備
プロジェクト作成
コマンドcomposer create-project --prefer-dist laravel/laravel autoCreateMigrationFileSystemテーブル作成
今回は、laravelのmigrationファイルを作成・実行し、テーブルを作り、そこから同じファイルが作成されるかをテストします。
実際は複数テーブルがあるため、2つのテーブルを用意する。
・applesテーブル
・lemonsテーブル
コマンド/var/www# php artisan make:migration create_apples_table Created Migration: 2019_07_15_133234_create_apples_table /var/www# php artisan make:migration create_lemons_table Created Migration: 2019_07_15_133511_create_lemons_table僕が今回参加するプロジェクトで使うカラムタイプが補えればいいので、それだけ洗い出す(新たに必要なカラムタイプは後から加えていく)
今回使うカラムタイプ
- bigint(20)のauto_increment
- bigint(20)
- bigint(20) nullable
- bigint(20) default(0)
- varchar(255)
- timestamp (created_atとupdated_atで使用する)
- int(11)
- tinyint(4)
- text
- date
- datetime
これらを二つのマイグレーションファイルに記述します。
CreateApplesTable.php<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateApplesTable extends Migration { public function up() { Schema::create('apples', function (Blueprint $table) { $table->bigIncrements('id'); $table->bigInteger('a'); $table->bigInteger('b')->nullable(); $table->bigInteger('c')->default(0); $table->string('d', 255); $table->timestamps(); }); } public function down() { Schema::dropIfExists('apples'); } }CreateLemonsTable.php<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateLemonsTable extends Migration { public function up() { Schema::create('lemons', function (Blueprint $table) { $table->bigIncrements('id'); $table->integer('e'); $table->tinyInteger('f'); $table->text('g'); $table->date('h'); $table->dateTime('i'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('lemons'); } }コマンド/var/www# php artisan migrate Migration table created successfully. Migrating: 2019_07_15_133234_create_apples_table Migrated: 2019_07_15_133234_create_apples_table Migrating: 2019_07_15_133511_create_lemons_table Migrated: 2019_07_15_133511_create_lemons_tableこれで準備が完了しました。
実装
今回作るファイル(4ファイル)
- app/Repositories/Repository.php
- views/create_table_stub.blade.php
- config/column_type.php
- app/Console/Commands/MakeMigrationFile.phpapp/Repositories/Repository.php(カラム情報を取得するよう)
Repository.php<?php namespace App\Repositories; use Illuminate\Support\Facades\DB; class Repository { //それぞれのテーブルごとのカラム情報を取得する public static function getTableColumnsList() { $tableColumnsList = []; $tableNameList = self::getTableNameList(); foreach ($tableNameList as $tableName){ $tableColumnsList[$tableName] = DB::select('show columns from '. $tableName); } return $tableColumnsList; } //テーブルの名前を一覧取得する(migrationsテーブルは必要ないので、取得したものからはずす) private static function getTableNameList() { return collect(DB::select('show tables')) ->keyBy('Tables_in_'. env('DB_DATABASE')) ->forget('migrations') ->keys(); } }getTableNameListの実行結果
getTableColumnsListの実行結果(applesテーブルの中身の写真だけ(長いので・・・・)
ファイルを作る用のフォーマットを作成する(views/create_table_stub.blade.php)
create_table_stub.blade.phpをview配下に作成する。
create_table_stub.blade.php@php $phpTag = '<?php' @endphp {!! $phpTag !!} use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class {{$className}} extends Migration { public function up() { Schema::create('{{$tableName}}', function (Blueprint $table) { @foreach($defineColumnList as $defineColumn) $table->{!! $defineColumn !!}; @endforeach }); } public function down() { Schema::dropIfExists('{{$tableName}}'); } }@foreachを一番左にしているのは、ファイルを作成したときにインデントを整えるためです。
{{}}ではなく、{!! !!}を使っているところは、エスケープされると都合がよくないため、こうしています。どのカラムタイプならどのマイグレーション用のメソッドを使うか決めておく(config/column_type.php)
今回使用する必要があるのだけ、定義しました。(後々必要なものは足して、完成度を上げていく)
column_type.php<?php return [ 'auto_increment' => [ 'bigint(20) unsigned' => 'bigIncrements' ], 'bigint(20)' => 'bigInteger', 'int(11)' => 'integer', 'tinyint(4)' => 'tinyInteger', 'date' => 'date', 'datetime' => 'dateTime', 'text' => 'text', //サイズ考慮する必要のあるタイプ 'length' => [ 'varchar' => 'string' ] ];auto_incrementは特殊パターンとして、またサイズを考量すべきものは、length配列の中に入れています。
今後、min maxや from toを使用するメソッドを使いたい場合はその時に強化します。
created_atとupdated_atのtimestampsメソッドは後々処理で追加します。
ちなみに、公式に使用できるカラムタイプが書いてあるので、そこを参考にしましたコマンド/var/www# php artisan config:clearコマンドを打ち、設定を反映させました。
コマンドで自動作成が動くようにする。(app/Console/Commands/MakeMigrationFile.php)
コマンドを打ち、ファイルを作成します。
コマンド/var/www# php artisan make:command MakeMigrationFile Console command created successfully.MakeMigrationFile.php<?php namespace App\Console\Commands; use App\Repositories\Repository; use Carbon\Carbon; use Illuminate\Console\Command; use Illuminate\Support\Facades\File; use Illuminate\Support\Str; class MakeMigrationFile extends Command { protected $signature = 'make:migration-file'; protected $description = 'マイグレーション用ファイルを自動作成'; public function __construct() { parent::__construct(); } public function handle() { $configColumnType = config('column_type'); $tableColumnsList = Repository::getTableColumnsList(); foreach ($tableColumnsList as $tableName => $columnList) { $tempDefineColumnList = []; foreach ($columnList as $index => $column) { if ($column->Extra === 'auto_increment') { $tempDefineColumnList[$index] = "{$configColumnType['auto_increment'][$column->Type]}('{$column->Field}')"; continue; } if (isset($configColumnType[$column->Type])) { $tempDefineColumnList[$index] = "{$configColumnType[$column->Type]}('{$column->Field}')"; if ($column->Null === 'YES') $tempDefineColumnList[$index] .= '->nullable()'; if (strlen($column->Default) > 0) $tempDefineColumnList[$index] .= "->default({$column->Default})"; continue; } $tempColumnType = preg_replace('/(\(|\)|[0-9])/', '', $column->Type); if (isset($configColumnType['length'][$tempColumnType])) { $tempLength = preg_replace('/[^0-9]/', '', $column->Type); $tempDefineColumnList[$index] = "{$configColumnType['length'][$tempColumnType]}('{$column->Field}', {$tempLength})"; continue; } //(特殊パターン)created_atとupdated_atのtimestampsメソッド if ($column->Field === 'created_at' && isset($columnList[$index + 1]) && $columnList[$index + 1]->Field === 'updated_at') { $tempDefineColumnList[$index] = 'timestamps()'; continue; } } $tempClassName = 'Create'. Str::studly($tableName). 'Table'; $tempContent = view('create_table_stub', [ 'className' => $tempClassName, 'tableName' => $tableName, 'defineColumnList' => $tempDefineColumnList ])->render(); $fileNamePrefix = Carbon::now()->format('Y_m_d_His'); $tempFilePath = database_path("migrations/{$fileNamePrefix}_create_{$tableName}_table.php"); File::put($tempFilePath, $tempContent); } } }こんな時間かぁー、自分の実力だとこのあとの改造(カプセル化やもっと短く書けるかなどを考える)と寝る時間が無くなってしまうので(あした会社のため)、とりあえず、要件は満たしたのでこれで、実行する。(handle内のカプセル化や足りない処理はまた今度修正)
コマンドphp artisan make:migration-file中身が同じマイグレーションファイルができました。いったん完了。
問題点
- MakeMigrationFile.phpのhandleメソッドの中身をカプセル化する
- lengthのほうのnullableとdefaultが考慮されていないため、その処理を加える。(その場合stringはデフォルト値をクォテーションで囲む)
- 命名ももっといいのがある
まとめ
意外と要件を満たすだけならさくっとできました。よかった明日会社で使ってみよ。
こうしたほうがいい(特にカプセル化・命名などなど)などの意見をぜひほしいです。新米のため、すごく助かります。もしよろしければ、お願いいたします。
- 投稿日:2019-07-16T00:12:13+09:00
laravelを使用したjsonを返すAPIの作り方
Laravelのリソースクラスは、モデルやモデルコレクションを記述しやすく簡単に、JSONへと変換してくれます。
↑公式から引用
モデル作成
php artisan make:model UserSampleモデル記述
$fillableに指定したカラムのみ、create()やfill()、update()で値が代入されます。
モデルから変換する配列やJSONに、パスワードのような属性を含めたくない場合があります。それにはモデルの$hiddenプロパティに定義を追加してください。
/api/app/UserSample.phpnamespace App; use \App\UserSample; use Illuminate\Database\Eloquent\Model; class UserSample extends Model { protected $table = 'UserSample'; // 上記コードでテーブル指定 protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ]; }コントローラー作成
php artisan make:resource UserSampleResourceコントローラー記述
/api/app/Http/Resources/UserSampleResource.php<?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; class UserSample extends JsonResource { /** * Transform the resource into an array. * * @param \Illuminate\Http\Request $request * @return array */ public function toArray($request) { return parent::toArray($request); } }route記述
/api/routes/api.php<?php use App\UserSample; use Illuminate\Http\Request; use App\Http\Resources\UserSampleResource; Route::get('/user', function () { return new UserSampleResource(UserSample::all()); });マイグレーション作成
php artisan make:migration UserSampleマイグレーション記述
/api/database/migrations/2019_07_15_042644_UserSample.php<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class UserSample extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('UserSample', function (Blueprint $table) { $table->increments('id')->index(); $table->string('name')->nullable(); $table->string('email')->nullable(); $table->string('password')->nullable();; $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { // } }マイグレーション実行
php artisan migrate実行する
ローカルにサーバーを立てる
php artisan serve下記をGETする
http://localhost:8000/api/userSample下記のようにjson形式でデータが返ってくるAPIの完成
{"data":[]}次回はuserを作成するAPI開発について書く。