Laravel
#laravel
1
1: Laravel 2
2
Laravel StackOverflow Slack 2
2
2
2
Laravel 2
2
MVC 2
2
3
3
Eloquent ORM 3
3
3
Examples 4
Laravel 4
4
4
4
2: AJAX 6
6
Examples 6
6
6
6
Ajax_token 7
3: Cron 8
8
Examples 8
Cron 8
4: Eloquent 9
9
9
Examples 9
9
10
10
11
12
13
404 14
14
5: Eloquent Relationship 15
15
Examples 15
hasMany1 15
6: Eloquent 16
16
16
Examples 16
16
16
16
7: Eloquent 18
Examples 18
18
18
19
19
21
8: Eloquent 22
Examples 22
22
22
23
23
1 23
11 24
2 UserPhone 24
25
25
26
27
9: Eloquent 31
10: HTML 32
Examples 32
32
11: Laravel 5.2.31 + 33
33
33
33
Examples 33
api-routesWeb 33
12: Laravel 5.4Sparkpost 35
35
Examples 35
.env 35
13: laravel-5.2 36
36
36
Examples 36
36
Ubuntu 16.0414.04LinuxMintLaravel 5.1 Framework 36
14: laravel-5.3 40
40
Examples 40
$ loop 40
15: laravel-5.3 41
41
Examples 41
Laravel 41
Laravel 41
Composer Create-Project 42
42
42
43
Hello World 43
Hello World 44
pretty URLWeb 44
16: LaravelDB 46
Examples 46
46
46
DB 47
Eloquent 47
Laravel 47
17: LaravelCustomException 49
49
Examples 49
laravelCustomException 49
18: laravelURL 50
50
Examples 50
50
URL 50
19: LinuxLaravel 5 51
51
Examples 51
LinuxLaravel 5 51
20: WindowsLaravel 54
54
Examples 54
54
21: 56
Examples 56
56
22: 58
Examples 58
58
58
Laravel 58
59
59
60
Hello World 61
Hello World 62
LaraDockLaravel Homestead for Docker 62
63
63
23: 65
65
Examples 65
65
Hello World 66
Hello World 66
66
66
67
24: 68
68
Examples 68
68
ModelNotFoundException 69
25: 70
70
70
Examples 70
document.php 70
HelpersServiceProvider.php 70
71
26: 72
72
Examples 72
72
72
sync 72
database 72
sqs 72
iron 73
redis 73
beanstalkd 73
null 73
27: 74
Examples 74
74
CorsHeaders 74
28: 76
76
76
Examples 76
76
76
76
77
Get 77
Contains 78
Pluck 78
Map 78
79
79
79
80
SortByDesc 80
reduce 81
82
82
29: 84
84
Examples 84
84
84
85
85
87
30: 88
Examples 88
88
31: 93
Examples 93
93
93
93
94
94
32: 95
95
Examples 95
95
DB 95
95
create 95
96
96
96
96
97
33: 99
99
Examples 99
99
34: 100
Examples 100
100
101
102
103
35: 104
Examples 104
104
104
104
105
Controllers 105
36: 106
Examples 106
106
37: 110
Examples 110
110
110
110
111
MySQL 111
fakerModelFactories 112
38: 115
Examples 115
115
116
116
117
117
118
39: 120
Examples 120
120
120
121
121
122
40: 123
123
123
123
123
Examples 123
123
124
124
124
125
Linux 125
41: / 127
Examples 127
127
127
129
SSHWeb 130
42: 131
131
131
131
Examples 131
131
131
132
43: 134
134
Examples 134
134
135
135
'If' 135
135
135
'While' 136
'Foreach' 136
Forelse 136
PHP 137
137
137
137
137
138
138
138
139
140
View :: share 140
View :: composer 141
141
141
PHP 142
44: 143
Examples 143
Laravel 143
144
45: 145
145
Examples 145
145
String 145
mehods 145
URL 146
46: 147
Examples 147
147
47: 148
148
148
Examples 148
148
149
149
48: 151
151
Examples 151
TokenMisMatch 151
49: 152
Examples 152
laravel-ide-helper 152
laravel-datatables 152
152
152
152
152
152
153
153
153
153
50: 154
154
Examples 154
154
51: 155
Examples 155
155
52: 156
Examples 156
HTTP 156
156
53: 158
Examples 158
158
158
158
159
159
URL 159
160
160
160
160
160
161
161
161
54: 163
Examples 163
163
163
55: 165
Examples 165
165
56: 166
166
Examples 166
166
57: 168
Examples 168
168
58: 169
169
Examples 169
169
169
169
59: 170
170
Examples 170
170
170
171
171
171
60: 173
173
Examples 174
174
175
175
POSTPUTPATCH 178
179
179
Request 179
180
180
61: 182
Examples 182
182
182
- 182
- 183
API - 183
62: 184
184
184
Examples 186
186
186
PHPLaravel Artisan 187
187
63: 189
Examples 189
189
64: 191
Examples 191
191
65: 195
Examples 195
195
196
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: laravel
It is an unofficial and free Laravel ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official Laravel.
The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/ja/home 1
1: Laravelをいめる
Laravel StackOverflow Slackコミュニティ
おすすめのチュートリアルLaravel
ガイドライン
スタイルガイド
LaravelについてのオープンソースのPHP WebフレームワークとしてTaylor OtwellによってされたLaravelは、Web
アプリケーションのプロセスをにし、することをとしています。
モデルビューコントローラ MVC アーキテクチャーパターン、 PSR-2コーディング、 PSR-4オートロードにしています。
LaravelでTest Driven Development TDD をするのはしく、がです。
GitHubでホストされ 、 https://github.com/laravel/laravelでなLaravelは、 マイクロサービスアーキテクチャをっており、カスタムメイドやのサードパーティのアプリケーションをすることでにできますパッケージ。
な
MVC
LaravelはMVCモデルをしているため、フレームワークの3つのコア、つまりモデル、ビュー、コントローラがにします。コントローラは、ほとんどのがわれるなです。モデルにしてデータを、、し、アプリケーションののHTMLをむビューにをします。
ブレードテンプレートエンジン
LaravelにはBladeというテンプレートエンジンがしています。ブレードはにいやすいですが、です。 Bladeのテンプレートエンジンがのなものとしていないの1つは、のです。ブレードテンプレ
https://riptutorial.com/ja/home 2
ートエンジンファイルでプレーンなPHPコードをすることができます。
Bladeのテンプレートエンジンファイルには、のファイルのの.phpに.bladeというファイルがされていることにすることがです。そのため、 .blade.phpはBladeテンプレートファイルのファイルです。ブレードテンプレートエンジンファイルは、resources / viewsディレクトリにされます。
ルーティングミドルウェア
ルートのけをりてアプリケーションのURLをすることができます。これらのルートは、データをむことも、コントローラにすることも、ミドルウェアにラップすることもできます。 Middelware
は、HTTPをフィルタリングするためのメカニズムです。それらは、コントローラにするにとするためにされ、をまたはできます。
Artisanは、Laravelのをするためにできるコマンドラインツールです。になモデル、コントローラ、そののリソースをするためのコマンドがされています。 Artisanコマンドラインツールをするのコマンドをすることもできます。
Eloquent ORM
モデルをさまざまなタイプのデータベースにするために、LaravelはのORMをしています。また、フレームワークはとシードをし、ロールバックもえています。
イベント
このフレームワークは、アプリケーションのイベントをすることができます。 NodeJsのものにたイベントリスナーとイベントハンドラをできます。
バージョン
バージョン
1.0 20110609
2.0 2011-11-24
3.0 2012-02-22
3.1 2012-03-27
3.2 2012-05-22
4.0 2013-05-28
4.1 2013-12-12
4.2 2014-06-01
https://riptutorial.com/ja/home 3
バージョン
5.0 2015-02-04
5.1 LTS 2015-06-09
5.2 2015-12-21
5.3 2016-08-24
5.4 2017-01-24
Examples
Laravelタグのドキュメントへようこそ
LaravelはよくられたPHPフレームワークです。ここでは、Laravelについてすべてをびます。オブジェクトプログラミングがであるかをることから、なLaravelパッケージのトピックにるまで、なものからめましょう。
のすべてのStackoverflowドキュメントタグと、これはコミュニティのドキュメントなので、にLaravelにするがあるは、のトピックやをしてをしてくださいのについては、このトピックのコメントにするスタイルのガイドと、Laravelについてびたいにのをできるようにするためにしたスタイルガイドをすることをれないでください。
それに、たちはあなたがてくれてとてもしくいます。
スターターガイド
ガイドは、にのためにトピックをにするためにたちがしたカスタムナビゲーションです。このナビゲーションはにべられています。
インストール
ラーヴェル・ビュー
ブレードはじめに
ブレードと
または
ここからのインストール
ここからをしてインストールする1.
https://riptutorial.com/ja/home 4
WAMPををし、ここで 、それをインストールし、PHPのをします2.
wwwとtypeコマンドのパスをする3.
composer create-project --prefer-dist laravel/laravel projectname
のLaravelバージョンをインストールするには、 wwwへのパスをし、コマンドをしてください
composer create-project --prefer-dist laravel/laravel=DESIRED_VERSION projectname
または
Laravelインストーラで
まず、ComposerをしてLaravelインストーラをダウンロードします。
composer global require "laravel/installer"
$ PATHに$HOME/.composer/vendor/binディレクトリまたはOSののディレクトリをして、システムによってlaravelファイルをlaravelことができるようにしてください。
laravel newコマンドをインストールすると、したディレクトリにしいLaravelインストールがされます。たとえば、 laravel new blogは、Laravelのがすべてインストールされたlaravel new blog
Laravelインストールをむblogというディレクトリがされます。
laravel new blog
オンラインでLaravelをいめるをむ https://riptutorial.com/ja/laravel/topic/794/laravelをいめる
https://riptutorial.com/ja/home 5
2: AJAXのトークンのエラー
き
はTokenMismatchエラーをするがにいことをしました。そして、このエラーは、いくつかのかないのためにします。がいをしているはたくさんあります。ヘッダーにNo _token、Ajaxをしているときに_ _tokenがされたデータがありません。ストレージパスにアクセスのがあり、セッションストレージパスがです。
Examples
ヘッダーのセットアップトークン
default.blade.php <head>にトークンをします。
<meta name="csrf-token" content="{{csrf_token()}}">
スクリプトのにajaxSetupをします。これはどこからでもアクセスです。これは、ajaxびしでヘッダーをします
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
トークンをオンにするタグ
のを<form>タグにしてください。このは_tokenというのしフィールドをし、トークンにをめみます。
{{csrf_field()}}
valueのし_tokenにcsrf_token ()をします。これは、されたのみをします。
<input type="hidden" name="_token" value="{{csrf_token()}}"/>
セッションストレージパスとをする
ここでは、プロジェクトのアプリケーションのURLは、 APP_URL=http://project.dev/ts/toys-store
きみなパーミッションをフォルダのstorage_path('framework/sessions')します。1. あなたのlaravelプロジェクト'path' => '/ts/toys-store',をしてください。2.
https://riptutorial.com/ja/home 6
あなたのクッキー'cookie' => 'toys-store',をする'cookie' => 'toys-store',3.
return [ 'driver' => env('SESSION_DRIVER', 'file'), 'lifetime' => 120, 'expire_on_close' => false, 'encrypt' => false, 'files' => storage_path('framework/sessions'), 'connection' => null, 'table' => 'sessions', 'lottery' => [2, 100], 'cookie' => 'toys-store', 'path' => '/ts/toys-store', 'domain' => null, 'secure' => false, 'http_only' => true, ];
Ajaxで_tokenフィールドをする
AJAXびしで_tokenをするはたくさんあります
var formData = new FormData($("#cart-add")[0]);をして、 <form>タグのすべてのフィールドのをしますvar formData = new FormData($("#cart-add")[0]);
1.
$("form").serialize();してください$("form").serialize();または$("form").serializeArray();2. Ajaxのdataに_tokenでする。 $('meta[name="csrf-token"]').attr('content')または$('input[name="_token"]').val()
3.
のコードのようなのAjaxびしでヘッダーとしてできます。4.
$.ajax({ url: $("#category-add").attr("action"), type: "POST", data: formData, processData: false, contentType: false, dataType: "json", headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
オンラインでAJAXのトークンのエラーをむ https://riptutorial.com/ja/laravel/topic/10656/ajaxのトークンのエラー
https://riptutorial.com/ja/home 7
3: Cronの
き
Cronはのでスケジュールされたタスクをするタスクスケジューラーデーモンです。 Cronはcrontabとばれるファイルをして、スケジューリング・プロセスをします。
Examples
Cronジョブをする
Crontabには、のタスクにするcronジョブがまれています。 Cronジョブは、cronとシェルコマンドの2つのでされています。
* * * * *コマンド/ to / run
のフィールド* * * * *は、スケジュールのをするためのオプションです。これは、に、、、、でされています。アスタリスクは、それぞれのフィールドでなすべてのをします。その、のcronジョブはされます。
のcronジョブは12:30にされます。
30 12 * * *コマンド/ to / run
オンラインでCronのをむ https://riptutorial.com/ja/laravel/topic/9891/cronの
https://riptutorial.com/ja/home 8
4: Eloquent
き
Eloquentは、LaravelにまれるORMオブジェクトリレーショナルモデルです。これは、アクティブなレコードパターンをし、リレーショナルデータベースとするためにされます。
テーブルの
では、テーブルにの "snake_case"を、モデルにの "StudlyCase"をします。えば
catsテーブルにはCatモデルがあります•jungle_catsテーブルにはJungleCatモデルがあります•usersテーブルにはUserモデルがありUser•peopleテーブルにはPersonモデルがあります•
Eloquentは、のように、モデルののをつテーブルでモデルをにバインドしようとします。
ただし、のをすると、デフォルトのをできます。
class User extends Model { protected $table = 'customers'; }
Examples
き
Eloquentは、LaravelフレームワークにみまれたORMです。これにより、 ActiveRecordパターンをして、オブジェクトのでデータベーステーブルとすることができます。
のモデルクラスは、、のデータベーステーブルにマッピングし、また、なるタイプの 、 、 、は、なるモデル・クラスとのにすることができます。
モデルセクションでは、モデルクラスのとについてします。
Eloquentモデルをするに、なくとも1つのデータベースがconfig/database.phpファイルにされていることをしてください。
のなクエリービルダーのいをするには、 php artisan ide-helper:generateコマンドをします。ここにリンクがあります。
https://riptutorial.com/ja/home 9
サブトピックナビゲーション
ゆるやかな
する
Eloquentでデータをみるだけでなく、 save()メソッドをしてデータをまたはすることもできます。しいモデルインスタンスをしたは、レコードがされます。それのは、データベースからモデルをしてしいをすると、モデルがされます。
このでは、しいUserレコードをしUser 。
$user = new User(); $user->first_name = 'John'; $user->last_name = 'Doe'; $user->email = '[email protected]'; $user->password = bcrypt('my_password'); $user->save();
また、 createメソッドをして、データのをしてフィールドにデータをすることもできます。
User::create([ 'first_name'=> 'John', 'last_name' => 'Doe', 'email' => '[email protected]', 'password' => bcrypt('changeme'), ]);
createメソッドをする、はモデルのfillableでするがあります。
class User extends Model { protected $fillable = [ 'first_name', 'last_name', 'email', 'password', ]; }
あるいは、すべてのをにりてることができるようにするには、$ guardedプロパティをのとしてします。
class User extends Model { /** * The attributes that aren't mass assignable. * * @var array */ protected $guarded = [];
https://riptutorial.com/ja/home 10
}
しかし、あなたはまたしてもせずにレコードをすることができますfillableして、モデルのforceCreateをではなく、 createを
User::forceCreate([ 'first_name'=> 'John', 'last_name' => 'Doe', 'email' => '[email protected]', 'password' => bcrypt('changeme'), ]);
は、のUserモデルをにみみ findをしfind 、してすることによって、のUserモデルをするです。
$user = User::find(1); $user->password = bcrypt('my_new_password'); $user->save();
のびしでじフィートをするには、 updateメソッドをうことができます
$user->update([ 'password' => bcrypt('my_new_password'), ]);
createメソッドとupdateメソッドをcreateと、のにすように、キーとのペアをにするがなく、のデータをするのがはるかにになります。
にしてくださいonlyとexceptデータをするときに。/するキーをにすることはです。そうしないと、がリクエストでのフィールドをし、しないをきこすがあります。
// Updating a user from specific request data $data = Request::only(['first_name', 'email']); $user->find(1); $user->update($data); // Create a user from specific request data $data = Request::except(['_token', 'profile_picture', 'profile_name']); $user->create($data);
データはデータベースにきんだにできます。モデルインスタンスをしたはモデルインスタンスをするか、するレコードのをできます。
モデルインスタンスをするには、モデルインスタンスをしてdelete()メソッドをびします。
$user = User::find(1); $user->delete();
または、 destroy()メソッドをして、するレコードのキーまたはキーのをすることもできます。
User::destroy(1);
https://riptutorial.com/ja/home 11
User::destroy([1, 2, 3]);
クエリとをみわせてすることもできます。
User::where('age', '<', 21)->delete();
これにより、にするすべてのユーザーがされます。
Eloquentをしてステートメントをdeletingと、 deletedモデルイベントは、されたモデルにしてされません。これは、deleteステートメントのにモデルがにはされないためです。
ソフト
レコードをにするのではなく、やレポートのためにレコードをしたいがあります。このため、Eloquentはソフトをします。
ソフトをモデルにするには、 SoftDeletesをインポートしてEloquentモデルクラスにするがあります。
namespace Illuminate\Database\Eloquent\Model; namespace Illuminate\Database\Eloquent\SoftDeletes; class User extends Model { use SoftDeletes; }
モデルをすると、モデルのテーブルのdeleted_atタイムスタンプにタイムスタンプがされるので、 deleted_atテーブルにdeleted_atカラムをしてください。また、には、にsoftDeletes()メソッドをびして、 deleted_atタイムスタンプをするdeleted_atます。
Schema::table('users', function ($table) { $table->softDeletes(); });
どのクエリでもソフトされたレコードはされます。 withTrashed()スコープをしてにすることができます
User::withTrashed()->get();
ソフトつまりゴミタイプのしたにユーザーがレコードをできるようにするには、 restore()メソッドをします。
$user = User::find(1); $user->delete(); $user->restore();
https://riptutorial.com/ja/home 12
にレコードをするには、 forceDelete()にデータベースからレコードをするforceDelete()メソッドをします。
$user = User::find(1); $user->forceDelete();
キーとタイムスタンプの
デフォルトでは、Eloquentモデルはキーのが'id'ことをしています。そうでないは、 $primaryKeyプロパティーをして、キーのをすることができます。
class Citizen extends Model { protected $primaryKey = 'socialSecurityNo'; // ... }
、キー findやfindOrFail をするEloquentメソッドは、このしいをします。
さらに、Eloquentはプライマリキーがインクリメントであることをしています。キーがインクリメントGUIDなどでないは、 $incrementingプロパティをfalseしてEloquentにするがありfalse 。
class Citizen extends Model { protected $primaryKey = 'socialSecurityNo'; public $incrementing = false; // ... }
デフォルトでは、Eloquentはcreated_atとupdated_atがテーブルにするとしています。これらのがEloquentによってにされないようにするには、モデルの$timestampsプロパティーをfalseにします。
class Citizen extends Model { public $timestamps = false; // ... }
タイムスタンプのにするのをカスタマイズするがあるは、モデルでCREATED_ATとUPDATED_ATをできます。
class Citizen extends Model { const CREATED_AT = 'date_of_creation'; const UPDATED_AT = 'date_of_last_update';
https://riptutorial.com/ja/home 13
// ... }
エンティティがつからないは404をげる
モーダルにつからないレコードをするときにをにスローするには、
Vehicle::findOrFail(1);
または
Vehicle::where('make', 'ford')->firstOrFail();
キーが1レコードがつからないModelNotFoundExceptionは、 ModelNotFoundExceptionがスローされます。にはいているものとじです ソースをる
$vehicle = Vehicle::find($id); if (!$vehicle) { abort(404); }
モデルのクローン
をするがあるかもしれませんが、いくつかのをするかもしれませんが、DRYをするながです。 Laravelはこのをするためのの「れた」をします。にされていませんが、APIをするがあります。
$model->replicate()うとにレコードをできます
$robot = Robot::find(1); $cloneRobot = $robot->replicate(); // You can add custom attributes here, for example he may want to evolve with an extra arm! $cloneRobot->arms += 1; $cloneRobot->save();
のでは、IDが1のロボットをつけてクローンします。
オンラインでEloquentをむ https://riptutorial.com/ja/laravel/topic/865/eloquent
https://riptutorial.com/ja/home 14
5: Eloquent Relationshipのマクロ
き
Laravelバージョン5.4.8のEloquent Relationshipのがあります。たちはhasManyそれはなるですののインスタンスをフェッチすることができます。これは、それをですることで、すべての
Examples
hasManyの1つのインスタンスをできます
たちのAppServiceProvider.php
public function boot() { HasMany::macro('toHasOne', function() { return new HasOne( $this->query, $this->parent, $this->foreignKey, $this->localKey ); }); }
たちはショップモーダルをっており、したのリストをしているとします。 ShopモーダルのAllPurchasedリレーションシップがあるとします
public function allPurchased() { return $this->hasMany(Purchased::class); } public function lastPurchased() { return $this->allPurchased()->latest()->toHasOne(); }
オンラインでEloquent Relationshipのマクロをむ
https://riptutorial.com/ja/laravel/topic/8998/eloquent-relationshipのマクロ
https://riptutorial.com/ja/home 15
6: Eloquentアクセッサミューテータ
き
アクセサーとミューテータをすると、モデルインスタンスでEloquentをまたはするときに、Eloquentをできます。たとえば、Laravelツールをしてがデータベースにされているにし、Eloquentモデルでアクセスするときにそのをにすることができます。カスタムアクセサやミューテータにえて、EloquentはにフィールドをCarbonインスタンスにキャストしたり、テキストフィールドをJSONにキャストすることもできます。
set {ATTRIBUTE}$//ラクダの•
Examples
アクセサの
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { /** * Get the user's first name. * * @param string $value * @return string */ public function getFirstNameAttribute($value) { return ucfirst($value); } }
アクセサリーのごのように、カラムののがアクセサにされ、をしてすことができます。アクセサーのにアクセスするには、モデルインスタンスのfirst_nameにアクセスします。
$user = App\User::find(1); $firstName = $user->first_name;
ミューテータの
https://riptutorial.com/ja/home 16
class User extends Model { public function setPasswordAttribute($password) { $this->attributes['password'] = bcrypt($password); } ... }
のコードは、パスワードプロパティがされるたびに「bcrypting」します。
$user = $users->first(); $user->password = 'white rabbit'; //laravel calls mutator on background $user->save(); // password is bcrypted and one does not need to call bcrypt('white rabbit')
オンラインでEloquentアクセッサミューテータをむ
https://riptutorial.com/ja/laravel/topic/8305/eloquent-アクセッサ-ミューテータ
https://riptutorial.com/ja/home 17
7: Eloquentモデル
Examples
モデルをる
モデル
モデルクラスは、 Illuminate\Database\Eloquent\Modelするがあります。モデルのデフォルトのは/appディレクトリです。
Artisanコマンドをすると、モデルクラスをにできます。
php artisan make:model [ModelName]
これはデフォルトでapp/しいPHPファイルをします。これは[ModelName].phpというで、しいモデルのをすべてみます。クラス、、およびになusingをみます。
モデルとにファイルをするは、のコマンドをします。- -mはファイルもします。
php artisan make:model [ModelName] -m
モデルのにえて、モデルにされたデータベースがされます。データベースPHPファイルは、デフォルトでdatabase/migrations/ます。デフォルトでは、idおよびcreated_at / updated_atカラムのものはまれないため、のカラムをするためにファイルをするがあります。
プロジェクトルートからphp artisan migrateをして、モデルをさせるためには、マイグレーションをするがありますマイグレーションファイルをしたら。
また、でモデルをしたにマイグレーションをするは、のコマンドをしてマイグレーションをすることができます。
php artisan make:migration [migration name]
たとえば、Catsのモデルをしたいとします。これは2つのがあり、のにかかわらずすることができます。にcatsテーブルをっていたや、でcatsテーブルをしたくないは、せずにすることをしました。
このでは、まだテーブルをっていないので、のコマンドをするので、をします。
php artisan make:model Cat -m
このコマンドは2つのファイルをします
https://riptutorial.com/ja/home 18
Appフォルダ app/Cat.php1.
データベースフォルダ database/migrations/timestamp_creat_cats_table.php2.
たちがをっているファイルは、このファイルのようにです。たちは、テーブルをどのようにせたいかをめることができます。みのマイグレーションのは、IDとタイムスタンプがえられます。
のファイルのには、のみのだけでなく、の、、のがまれます。
public function up() { Schema::create('cats', function (Blueprint $table) { $table->increments('id'); //Predefined ID $table->string('name'); //Name $table->integer('age'); //Age $table->string('colour'); //Colour $table->timestamps(); //Predefined Timestamps }); }
つまり、のモデルとをするのはです。に、マイグレーションをしてデータベースでするには、のコマンドをします。
php artisan migrate
のがデータベースにされます。
モデルファイルの
モデルはPSR4のおかげでどこにでもできます。
デフォルトでは、モデルはappディレクトリにAppのとともにされます。よりなアプリケーションの、、アプリケーションアーキテクチャにったでモデルをのフォルダにすることをおめします。
たとえば、のをモデルとしてするアプリケーションがある、 app/Fruitsというのフォルダをし、このフォルダにBanana.php StudlyCaseををすると、BananaクラスをできますApp\Fruitsネームスペースで
namespace App\Fruits; use Illuminate\Database\Eloquent\Model; class Banana extends Model { // Implementation of "Banana" omitted }
モデル
https://riptutorial.com/ja/home 19
Eloquentは、「の」アプローチにいます。Modelクラスをすると、すべてのモデルがにすプロパティをします。きされないり、のデフォルトがされます。
プロパティ デフォルト
protected $connection DB デフォルトのDB
protected $table テーブル
デフォルトでは、クラスはsnake_caseされ、されます。えば、 SpecialPersonなりspecial_people
protected $primaryKey テーブルPK id
public $incrementing
IDがインクリメントされているかどうかをします。
true
public $timestamps
モデルにタイムスタンプをけるがあるかどうかをします。
true
const CREATED_AT タイムスタンプの created_at
const UPDATED_AT タイムスタンプの updated_at
protected $dates
timestampsにえて、DateTimeにするがある
[]
protected $dateFormat がされる のSQLダイアレクトのデフォルト。
protected $with モデルによるeagerloadとの []
protected $hidden
モデルのシリアライゼーションでがされています
[]
protected $visible モデルのでされる []
protected $appends
モデルのシリアライズにされたアクセサ
[]
protected $fillable りてな []
protected $guarded
りてからブラックリストにされている
[*] すべての
protected $touches にれるべき []
https://riptutorial.com/ja/home 20
プロパティ デフォルト
protected $perPage
ページのためにすモデルの。
15
5.0
プロパティ デフォルト
protected $casts ネイティブにキャストするがある []
のモデルをする
$user = User::find(1); $user->name = 'abc'; $user->save();
また、でsaveをsaveのないupdateをして、のをにすることもできます。
$user = User::find(1); $user->update(['name' => 'abc', 'location' => 'xyz']);
あらかじめクエリをすることなくモデルをすることもできます
User::where('id', '>', 2)->update(['location' => 'xyz']);
モデルのupdated_atタイムスタンプのをトリガしたくないは、 touchオプションをすことができます
$user = User::find(1); $user->update(['name' => 'abc', 'location' => 'xyz'], ['touch' => false]);
オンラインでEloquentモデルをむ https://riptutorial.com/ja/laravel/topic/7984/eloquent-モデル
https://riptutorial.com/ja/home 21
8: Eloquent
Examples
の
Eloquentでは、にすように、されたについてもすることができます。
User::whereHas('articles', function (Builder $query) { $query->where('published', '!=', true); })->get();
この、メソッドはarticlesでなければなりません。クロージャーにされるは、するモデルのクエリビルダです。ここでは、のクエリをできます。
Eager Loading
ユーザーモデルがモデルとのをち、をにみみたいとします。これは、ユーザーをするときにユーザーのがみまれることをします。
articlesは、Userモデルのメソッドです。
User::with('articles')->get();
のがある。えばやなど。
User::with('articles','posts')->get();
ネストされたをする
User::with('posts.comments')->get();
のネストされたをびす
User::with('posts.comments.likes')->get()
モデルをする
CommentきのhasManyをつPostモデルがあるとします。のようにして、にするCommentオブジェクトをすることができます
$post = Post::find(1); $commentToAdd = new Comment(['message' => 'This is a comment.']);
https://riptutorial.com/ja/home 22
$post->comments()->save($commentToAdd);
saveManyをすると、のモデルをにできます。
$post = Post::find(1); $post->comments()->saveMany([ new Comment(['message' => 'This a new comment']), new Comment(['message' => 'Me too!']), new Comment(['message' => 'Eloquent is awesome!']) ]);
わりに、EloquentモデルインスタンスのわりにプレーンなPHPをけけるcreateメソッドもあります。
$post = Post::find(1); $post->comments()->create([ 'message' => 'This is a new comment message' ]);
き
EloquentはEloquentモデルクラスのとしてされています。 Eloquentモデルのように、はなクエリビルダとしてもするため、としてのリレーションシップをすることでなメソッドとクエリがされます。たとえば、こののにをすることができます。
$user->posts()->where('active', 1)->get();
トピックにする
タイプ
1
に1つのコメントがあり、コメントはただ1つのにするとします。
コメントテーブルはpost_idをつようにpost_idます。こののはのようになります。
ポストモデル
public function comments() { return $this->belongsTo(Post::class); }
キーがpost_idのpost_id 、えばキーはexample_post_idです。
https://riptutorial.com/ja/home 23
public function comments() { return $this->belongsTo(Post::class, 'example_post_id'); }
ローカルがidの、えばローカルがother_id
public function comments() { return $this->belongsTo(Post::class, 'example_post_id', 'other_id'); }
コメントモデル
1のをする
public function post() { return $this->hasMany(Comment::class); }
11
2つのモデルをける UserモデルとPhoneモデルApp\User
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { /** * Get the phone record associated with the user. */ public function phone() { return $this->hasOne('Phone::class', 'foreign_key', 'local_key'); } }
App\Phone
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Phone extends Model
https://riptutorial.com/ja/home 24
{ /** * Get the user that owns the phone. */ public function user() { return $this->belongsTo('User::class', 'foreign_key', 'local_key'); } }
foreign_key デフォルトでは、Eloquentはこのをother_model_name_id このはuser_idとphone_id とphone_id 、そうでないはします。
local_key デフォルトでは、Eloquentはこのをid のモデルのキーとみなし、そうでないはします。
データベースがlaravelにってをファイルした、にキーとローカルキーをするはありません
とがあるとします。はくのにし、はくのにします。 3つのテーブルがあります。 2つのモデルと1つのピボットテーブル。 roles 、 users 、およびpermission_roleテーブル
ロールモデル
public function permissions() { return $this->belongsToMany(Permission::class); }
モデル
public function roles() { return $this->belongsToMany(Roles::class); }
1
ピボット・テーブルになるテーブルをしながら、のことをしてください。
eloquentがピボット・キーをするためにアルファベットをするrole_permission 、 permission_roleわりにrole_permissionをするとします。ピボットテーブルをのように2のパラメータとしてすがあります。
ロールモデル
public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission'); }
モデル
https://riptutorial.com/ja/home 25
public function roles() { return $this->belongsToMany(Roles::class, 'role_permission'); }
2
ピボット・テーブルでなるキーをしているは、
Eloquentは、3と4のパラメータとしてキーがされないと、 _idつなテーブルになるとします。ピボットはrole_idとpermission_idフィールドをっているとします。これらのキーをするは、3と4のパラメーターとしてすがあります。
あればうことができますother_role_idのわりにrole_idとother_permission_idのわりpermission_idされるべきです。それはのようになります。
ロールモデル
public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission', 'other_role_id', 'other_permission_id'); }
モデル
public function roles() { return $this->belongsToMany(Roles::class, 'role_permission', 'other_permission_id', 'other_role_id'); }
のは、モデルがのけでののモデルにすることをにする。いはイメージであり、ユーザーとプロダクトのがイメージをつことができます。テーブルのはのようになります。
user id - integer name - string email - string product id - integer title - string SKU - string image id - integer url - string imageable_id - integer imageable_type - string
るべきなはテーブルにあります。 imageable_idにはユーザーまたはのIDがまれ、 imageable_typeに
https://riptutorial.com/ja/home 26
はモデルのクラスがまれます。モデルでは、のようにをします。
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Image extends Model { /** * Get all of the owning imageable models. */ public function imageable() { return $this->morphTo(); } } class User extends Model { /** * Get all of the user's images. */ public function images() { return $this->morphMany('Image::class', 'imageable'); } } class Product extends Model { /** * Get all of the product's images. */ public function images() { return $this->morphMany('Image::class', 'imageable'); } }
また、モデルからのをするには、 morphToのびしをするメソッドのにアクセスしmorphTo 。たちの、それはイメージモデルのimageableメソッドです。そこで、そのメソッドにプロパティとしてアクセスします
$image = App\Image::find(1); $imageable = $image->imageable;
このimageableは、ユーザーまたはプロダクトのいずれかをします。
とがあるとします。はくのにし、はくのにします。 3つのテーブルがあります。 2つのモデルと1つのピボットテーブル。 roles 、 users 、およびpermission_roleテーブル
ロールモデル
https://riptutorial.com/ja/home 27
public function permissions() { return $this->belongsToMany(Permission::class); }
モデル
public function roles() { return $this->belongsToMany(Roles::class); }
1
ピボット・テーブルになるテーブルをしながら、のことをしてください。
eloquentがピボット・キーをするためにアルファベットをするrole_permission 、 permission_roleわりにrole_permissionをするとします。ピボットテーブルをのように2のパラメータとしてすがあります。
ロールモデル
public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission'); }
モデル
public function roles() { return $this->belongsToMany(Roles::class, 'role_permission'); }
2
ピボット・テーブルでなるキーをしているは、
Eloquentは、3と4のパラメータとしてキーがされないと、 _idつなテーブルになるとします。ピボットはrole_idとpermission_idフィールドをっているとします。これらのキーをするは、3と4のパラメーターとしてすがあります。
あればうことができますother_role_idのわりにrole_idとother_permission_idのわりpermission_idされるべきです。それはのようになります。
ロールモデル
public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission', 'other_role_id',
https://riptutorial.com/ja/home 28
'other_permission_id'); }
モデル
public function roles() { return $this->belongsToMany(Roles::class, 'role_permission', 'other_permission_id', 'other_role_id'); }
withPivotをしてテーブルにアクセスする
ピボットテーブルに3の ' permission_assigned_date 'があるとします。デフォルトでは、モデルキーのみがピボットオブジェクトにされます。クエリでこのをするには、withPivotでをするがあります。
public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission', 'other_role_id', 'other_permission_id')->withPivot('permission_assigned_date'); }
アタッチ/デタッチ
また、Eloquentは、モデルでのをよりにするための、いくつかのヘルパーメソッドをしています。たとえば、ユーザーがくのをつことができ、にくのアクセスをたせることができます。モデルをするテーブルにレコードをして、にロールをするには、attachメソッドをします。
$role= App\Role::find(1); $role->permissions()->attach($permissionId);
モデルにリレーションシップをするときに、テーブルにするデータのをすこともできます。
$rol->roles()->attach($permissionId, ['permission_assigned_date' => $date]);
に、ロールにしてのをするには、detachをします
$role= App\Role::find(1); //will remove permission 1,2,3 against role 1 $role->permissions()->detach([1, 2, 3]);
また、syncメソッドをしてのけをすることもできます。 syncメソッドはIDのをけり、テーブルにします。されたにないIDはテーブルからされます。したがって、このがすると、されたのIDのみがテーブルにします。
//will keep permission id's 1,2,3 against Role id 1 $role= App\Role::find(1)
https://riptutorial.com/ja/home 29
$role->permissions()->sync([1, 2, 3]);
オンラインでEloquentをむ https://riptutorial.com/ja/laravel/topic/7960/eloquent-
https://riptutorial.com/ja/home 30
9: EloquentのフィールドエイリアスをするオンラインでEloquentのフィールドエイリアスをするをむ
https://riptutorial.com/ja/laravel/topic/7927/eloquentのフィールドエイリアスをする
https://riptutorial.com/ja/home 31
10: HTMLとフォームビルダ
Examples
インストール
HTMLとForm BuilderはLaravel 5のコアコンポーネントではないため、インストールするがあります。
composer require laravelcollective/html "~5.0"
にconfig/app.phpでサービスプロバイダをするがあります。ファサードのエイリアスはのようになります。
'providers' => [ // ... Collective\Html\HtmlServiceProvider::class, // ... ], 'aliases' => [ // ... 'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class, // ... ],
フォームとHTMLでフルドキュメントをできます
オンラインでHTMLとフォームビルダをむ https://riptutorial.com/ja/laravel/topic/3672/htmlとフォームビルダ
https://riptutorial.com/ja/home 32
11: Laravel 5.2.31 +のデフォルトのルーティングをする
public function mapRouter $ router//アプリケーションのルートをします。•
protected function mapWebRoutesRouter $ router//アプリケーションの "Web"ルートをします。
•
パラメーター
パラメータ ヘッダ
ルータ$ルータ \ Illuminate \ Routing \ Router $ router
ミドルウェアとは、あるルートへのすべてのコールがにルートのコードにたるにミドルウェアをすることをします。 Laravelでは、Webミドルウェアがセッションやcsrfトークンチェックなどをするためにされます。
デフォルトでauthやapiのようなのミドルウェアがあります。のミドルウェアをにすることもできます。
Examples
のミドルウェアでapi-routesをし、デフォルトのWebミドルウェアをする
Laravelバージョン5.2.31、WebミドルウェアはRouteServiceProvider
https://github.com/laravel/laravel/commit/5c30c98db96459b4cc878d085490e4677b0b67edでデフォルトでされます。
app / Providers / RouteServiceProvider.phpでは、app / Http / routes.phpのすべてのルートにミドルウェアをするのがあります
public function map(Router $router) { $this->mapWebRoutes($router); } // ... protected function mapWebRoutes(Router $router) { $router->group([ 'namespace' => $this->namespace, 'middleware' => 'web', ], function ($router) { require app_path('Http/routes.php');
https://riptutorial.com/ja/home 33
}); }
ごのとおり、 ミドルウェアの Webがされています。ここでこれをすることができます。しかし、のエントリをにして、たとえばapiルートをのファイルにれることもできますroutes-api.phpなど
public function map(Router $router) { $this->mapWebRoutes($router); $this->mapApiRoutes($router); } protected function mapWebRoutes(Router $router) { $router->group([ 'namespace' => $this->namespace, 'middleware' => 'web', ], function ($router) { require app_path('Http/routes.php'); }); } protected function mapApiRoutes(Router $router) { $router->group([ 'namespace' => $this->namespace, 'middleware' => 'api', ], function ($router) { require app_path('Http/routes-api.php'); }); }
これにより、routes.phpのなグループラッパーなしでアプリケーションルートからapiルートをにできます
オンラインでLaravel 5.2.31 +のデフォルトのルーティングをするをむ
https://riptutorial.com/ja/laravel/topic/4285/laravel-5-2-31-plusのデフォルトのルーティングをする
https://riptutorial.com/ja/home 34
12: Laravel 5.4とのSparkpostの
き
Laravel 5.4にはsparkpost api libがプリインストールされています。 Sparkpost libには、sparkpost
アカウントからつけることができるがです。
Examples
サンプル.envファイルデータ
sparkpost email api setupをにするには、のをenvファイルにしてください。アプリケーションはメールのをするのにしています。 MAIL_DRIVER =スパークポスト SPARKPOST_SECRET = のは、laravels Mail :: sendをしてメールをするビジネスロジックをつコントローラでかれたコードをするものではありません。
オンラインでLaravel 5.4とのSparkpostのをむ https://riptutorial.com/ja/laravel/topic/10136/laravel-
5-4とのsparkpostの
https://riptutorial.com/ja/home 35
13: laravel-5.2の
き
Laravelは、バンドル、、Artisan CLIをえたMVCフレームワークです。 Laravelは、CodeIgniter、Yii、ASP.NET MVC、Ruby on Rails、Sinatraなどのフレームワークのれたのくをみんだなツールセットとアプリケーションアーキテクチャをします。 Laravelはオープンソースのフレームワークです。 Webのスピードをさせるになをえています。 Core PHPとAdvanced PHPにしていれば、Laravelはあなたのをにします。それはくのをします。
このセクションでは、laravel-5.1のと、なぜがそれをいたいのかをします。
また、laravel-5.1のきなテーマについてもし、するトピックにリンクしてください。 laravel-5.1
のドキュメントはしくなっているので、これらのトピックのバージョンをするがあります。
Examples
インストールまたはセットアップ
Linux / Mac / UnixマシンにLaravel 5.1をインストールする。
インストールをするに、のがたされているかどうかをしてください。
PHP> = 5.5.9•OpenSSL PHPエクステンション•
PDO PHPエクステンション•
Mbstring PHPエクステンション•
Tokenizer PHPモジュール•
インストールをしましょう
をインストールしてください。 Composerドキュメント1. composer create-project laravel/laravel <folder-name> "5.1.*"2.
storageフォルダとbootstrap/cacheフォルダがきみであることをしてください。3. .envファイルをき、データベース、デバッグステータス、アプリケーションなどのをします。
4.
php artisan serveをし、ブラウザでhttp://localhost:8000ます。すべてがうまくいけば、ページをするがあります
5.
Ubuntu 16.04、14.04、およびLinuxMintにLaravel 5.1 Frameworkをインストールする
ステップ1 - LAMPをインストールする
https://riptutorial.com/ja/home 36
Laravelをいめるには、まずランニングLAMPサーバーをするがあります。すでにLAMPスタックをしているは、このステップをスキップします。それのは、のコマンドをしてUbuntuシステムのランプをします。
PHP 5.6をインストールする
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install -y php5.6 php5.6-mcrypt php5.6-gd
Apache2をインストールする
$ apt-get install apache2 libapache2-mod-php5
MySQLをインストールする
$ apt-get install mysql-server php5.6-mysql
ステップ2 - Composerのインストール
Composerは、Laravelのをインストールするためにです。したがって、のコマンドをして、システムでコマンドとしてダウンロードしてしてください。
$ curl -sS https://getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer $ sudo chmod +x /usr/local/bin/composer
ステップ3 - Laravelをインストールする
Laravelのをダウンロードするには、のコマンドをってlaravelのマスターリポジトリをgithubからクローンします。
$ cd /var/www $ git clone https://github.com/laravel/laravel.git
Laravelコードディレクトリにし、composerをしてLaravelフレームワークになすべてのをインストールします。
$ cd /var/www/laravel $ sudo composer install
のインストールにはしばらくがかかります。その、ファイルにするなアクセスをしてください。
$ chown -R www-data.www-data /var/www/laravel $ chmod -R 755 /var/www/laravel $ chmod -R 777 /var/www/laravel/app/storage
https://riptutorial.com/ja/home 37
ステップ4 - キーをする
Illuminateサービスでされる32ビットのキーをします。
$ php artisan key:generate Application key [uOHTNu3Au1Kt7Uloyr2Py9blU0J5XQ75] set successfully.
config/app.phpファイルをし、のされたアプリケーションキーをのようにします。また、がしくされていることをしてください。
'key' => env('APP_KEY', 'uOHTNu3Au1Kt7Uloyr2Py9blU0J5XQ75'), 'cipher' => 'AES-256-CBC',
ステップ5 - Apache VirtualHostをする
Apacheのファイルにホストをして、WebブラウザからLaravelフレームワークにアクセスします。 /etc/apache2/sites-available/ディレクトリにApacheファイルをし、のをしてください。
$ vim /etc/apache2/sites-available/laravel.example.com.conf
これはホストのファイルです。
<VirtualHost *:80> ServerName laravel.example.com DocumentRoot /var/www/laravel/public <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/laravel> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
に、のコマンドをしてWebサイトをにし、Apacheサービスをみみさせます。
$ a2ensite laravel.example.com $ sudo service apache2 reload
ステップ6 - Laravelへのアクセス
こので、システムにLaravel 5 PHPフレームワークがにしました。すぐWebブラウザでLaravelアプリケーションにアクセスするためのホストファイルエントリをします。 127.0.0.1をApacheで
https://riptutorial.com/ja/home 38
したドメインでサーバーipとlaravel.example.comでします。
$ sudo echo "127.0.0.1 laravel.example.com" >> /etc/hosts
おにりのWebブラウザでhttp://laravel.example.comにアクセスしてください。
オンラインでlaravel-5.2のをむ https://riptutorial.com/ja/laravel/topic/1987/laravel-5-2の
https://riptutorial.com/ja/home 39
14: laravel-5.3の
き
Laravel 5.2から5.3への、、
Examples
$ loop
しばらくの、Bladeでのループはされていたことがわかりました。5.3のように、 $loopというがあります
@foreach($variables as $variable) // Within here the `$loop` variable becomes available // Current index, 0 based $loop->index; // Current iteration, 1 based $loop->iteration; // How many iterations are left for the loop to be complete $loop->remaining; // Get the amount of items in the loop $loop->count; // Check to see if it's the first iteration ... $loop->first; // ... Or last iteration $loop->last; //Depth of the loop, ie if a loop within a loop the depth would be 2, 1 based counting. $loop->depth; // Get's the parent `$loop` if the loop is nested, else null $loop->parent; @endforeach
オンラインでlaravel-5.3のをむ https://riptutorial.com/ja/laravel/topic/9231/laravel-5-3の
https://riptutorial.com/ja/home 40
15: laravel-5.3をいめるこのセクションでは、laravel-5.3のと、なぜがそれをいたいのかをします。
また、laravel-5.3のきなテーマについてもし、するトピックにリンクするがあります。 laravel-
5.3のドキュメントはしくなっているので、これらのトピックのバージョンをするがあります。
Examples
Laravelのインストール
PHP >= 5.6.4とComposerマシンにインストールされているがあります。のバージョンをするには、のコマンドをします。 PHPの
php -v
このような
PHP 7.0.9 (cli) (built: Aug 26 2016 06:17:04) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
け
ターミナル/ CMDでコマンドをすることができます
composer --version
このような
composer version 1.2.1 2016-09-12 11:27:19
Laravelは、 Composerをしてそのをします。したがって、Laravelをするに、マシンにComposer
がインストールされていることをしてください。
Laravelインストーラで
まず、ComposerをしてLaravelインストーラをダウンロードします。
composer global require "laravel/installer"
$ PATHに$HOME/.composer/vendor/binディレクトリまたはOSののディレクトリをして、システム
https://riptutorial.com/ja/home 41
によってlaravelファイルをlaravelことができるようにしてください。
laravel newコマンドをインストールすると、したディレクトリにしいLaravelインストールがされます。たとえば、 laravel new blogは、Laravelのがすべてインストールされたlaravel new blog
Laravelインストールをむblogというディレクトリがされます。
laravel new blog
Composer Create-Projectをして
また、にComposer create-projectコマンドをしてLaravelをインストールすることもcreate-
projectます。
composer create-project --prefer-dist laravel/laravel blog
セットアップ
Laravelのインストールがしたら、ストレージとブートストラップフォルダのpermissionsをするがあります。
permissionsは、Laravelのインストールにするためのもなプロセスの1つです。
ローカルサーバー
PHPがローカルにインストールされていて、PHPのみみサーバーをしてアプリケーションをしたいは、 serve Artisanコマンドをすることができます。このコマンドは、サーバーをhttp://localhost:8000
php artisan serve
ブラウザのリクエストURL http://localhost:8000きますhttp://localhost:8000
サーバー
Laravelフレームワークには、いくつかのシステムがあります。もちろん、これらのはすべてLaravel Homesteadマシンでたされるため、ローカルのLaravelとしてHomesteadをすることをくおめします。
ただし、Homesteadをしていないは、サーバーがのをたしていることをするがあります。
PHP> = 5.6.4•OpenSSL PHPエクステンション•
PDO PHPエクステンション•
Mbstring PHPエクステンション•
https://riptutorial.com/ja/home 42
Tokenizer PHPモジュール•XML PHP•
ローカルサーバー
PHPがローカルにインストールされていて、PHPのみみサーバーをしてアプリケーションをしたいは、 serve Artisanコマンドをすることができます。このコマンドは、サーバーをhttp://localhost:8000
php artisan serve
もちろん、よりなローカルオプションは、 Homestead and Valetからできます。
8080ようなカスタムポートをすることもです。これは--portオプションでうことができます。
php artisan serve --port=8080
ホストファイルにローカルドメインがあるは、ホストをできます。これは--hostオプションでうことができます。
php artisan serve --host=example.dev
カスタムホストとポートですることもできます。これは、のコマンドでできます。
php artisan serve --host=example.dev --port=8080
Hello Worldのとビューの
な
routes/web.phpファイルをき、のコードをファイルにりけます
Route::get('helloworld', function () { return '<h1>Hello World</h1>'; });
ここでは「 helloworld 」はアクセスしたいページとしてし、
ブレードファイルをせずにページにアクセスしたいは、このでlaravelルーティングをできます
ブラウザのアドレスバーにlocalhost/helloworld 、Hello Worldをしているページにアクセスできます。
のステップ。
とてもシンプルなHello Worldをするをびました hello worldをすことでしかし、々はそれをよりいものにすることができます
https://riptutorial.com/ja/home 43
ステップ1。 のコードをするのではなく、 routes/web.phpファイルからめましょう。のコードをします
Route::get('helloworld', function() { return view('helloworld'); });
のりはなhelloworldテキストではなく、ビューです。 Laravelのビューはにしいファイルです。このファイル "helloworld"には、HTMLがまれています。
ステップ2。 ビューをびすようにルートをしたので、ビューをします。 Laravelはビューのblade.phpファイルでします。したがって、この、たちのルートはhelloworldとばれます。だからたちのはhelloworld.blade.phpとばれます
resources/viewsディレクトリにしいファイルをし、helloworld.blade.phpとぶ
ここで、このしいファイルをき、Hello Worldをしてします。ののように、のなるでをることができます。
<html> <body> <h1> Hello World! </h1> <?php echo "Hello PHP World!"; ?> </body> </html>
すぐあなたのブラウザにき、なのようにあなたのルートをもうタイプしてください
localhost/helloworldあなたはすべてののしいされたビューをるでしょう
Hello Worldの
ルートファイルをく。のコードをりけます。
Route::get('helloworld', function () { return '<h1>Hello World</h1>'; });
http://localhost/helloworldをルーティングすると、Hello Worldがされます。
routesファイルは/routes/web.phpあり/routes/web.php
pretty URLのWebサーバー
あなたがインストールしたはLaravelてComposer or the Laravel installer 、のにあなたがとなりま
https://riptutorial.com/ja/home 44
す。
Apache Laravelのには、 public/.htaccessファイルがまれています。このファイルは、パスのindex.phpフロントコントローラなしでURLをするためにされます。 ApacheでLaravelをするに、 mod_rewriteモジュールをにして、 .htaccessファイルがサーバーによって.htaccessされるようにしてください。
Laravelにされている.htaccessファイルがApacheのインストールでしないは、のようにしてください
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
NginxのNginxをしている、サイトののディレクティブはすべてのリクエストをindex.phpフロントコントローラにります
location / { try_files $uri $uri/ /index.php?$query_string; }
もちろん、 HomesteadやValetをすると、かなりのURLがにされます。
オンラインでlaravel-5.3をいめるをむ https://riptutorial.com/ja/laravel/topic/8602/laravel-5-3をいめる
https://riptutorial.com/ja/home 45
16: LaravelにおけるのDB
Examples
ステップ
データベースファイルおそらくapp/config/database.php で、のタイプののデータベースをできます。たとえば、2つのMySQLデータベースからデータをするには、それらを々にします。
<?php return array( 'default' => 'mysql', 'connections' => array( # Our primary database connection 'mysql' => array( 'driver' => 'mysql', 'host' => 'host1', 'database' => 'database1', 'username' => 'user1', 'password' => 'pass1' 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), # Our secondary database connection 'mysql2' => array( 'driver' => 'mysql', 'host' => 'host2', 'database' => 'database2', 'username' => 'user2', 'password' => 'pass2' 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), ), );
デフォルトのはまだmysqlされています。つまり、にしないり、アプリケーションはmysqlをします。
スキーマビルダーの
スキーマビルダーでは、のでスキーマファサードをします。 connection()メソッドをして、するをします。
Schema::connection('mysql2')->create('some_table', function($table) {
https://riptutorial.com/ja/home 46
$table->increments('id'): });
DBクエリービルダーの
Schema Builderとに、Query Builderでをします 。
$users = DB::connection('mysql2')->select(...);
Eloquentをう
Eloquentモデルでするをするはあります。 1つのは、モデルに$ connectionをすることです。
<?php class SomeModel extends Eloquent { protected $connection = 'mysql2'; }
は、にsetConnectionメソッドをしてすることもできます。
<?php class SomeController extends BaseController { public function someMethod() { $someModel = new SomeModel; $someModel->setConnection('mysql2'); $something = $someModel->find(1); return $something; } }
Laravelのドキュメント
のがされているでも、々のはDBファサードのでアクセスできます。 connectionにされるnameは、 config/database.phpファイルにリストされているの1つにするがあります。
$users = DB::connection('foo')->select(...);
rawは、インスタンスでgetPdoメソッドをしてPDOインスタンスのとなるものにアクセスすることもできます。
$pdo = DB::connection()->getPdo();
https://riptutorial.com/ja/home 47
https://laravel.com/docs/5.4/database#using-multiple-database-connections
オンラインでLaravelにおけるのDBをむ https://riptutorial.com/ja/laravel/topic/9605/laravelにおけるのdb
https://riptutorial.com/ja/home 48
17: LaravelのCustomExceptionクラス
き
PHPのは、これまでにないイベントやエラーがしたときにスローされます。
として、ifなどのアプリケーションロジックをするためにをしてはならず、Exceptionクラスのサブクラスであるがあります。
1つのクラスですべてのをキャッチしたのなは、にじてなるメッセージをすカスタムハンドラをできることです。
Examples
laravelのCustomExceptionクラス
すべてのエラーとカスタムとデフォルトのは、app / Exceptions / Handler.phpのHandlerクラスによって2つのメソッドのけをりてされます。
•
レンダリング
public function render($request, Exception $e) { //check if exception is an instance of ModelNotFoundException. if ($e instanceof ModelNotFoundException) { // ajax 404 json feedback if ($request->ajax()) { return response()->json(['error' => 'Not Found'], 404); } // normal 404 view page feedback return response()->view('errors.missing', [], 404); } return parent::render($request, $e); }
•
404.blade.phpというのエラーフォルダーにするビューをします
ユーザーがつかりません。
あなたはインターネットのバランスをった
オンラインでLaravelのCustomExceptionクラスをむ
https://riptutorial.com/ja/laravel/topic/9550/laravelのcustomexceptionクラス
https://riptutorial.com/ja/home 49
18: laravelのURLからパブリックをする
き
LaravelのURLからpublicをするには、インターネットでくのがありますが、もなはのとおりです
Examples
どうやってするか
URLからpublicをするには、のにいます
.htaccessファイルを/publicディレクトリからLaravel/projectルートフォルダにコピーします。
1.
Laravel/projectルートフォルダのserver.phpをindex.phpます。2.
あなたはになるでしょう。
これは、 Laravel 4.2 、 Laravel 5.1 、 Laravel 5.2 、 Laravel 5.3でテストされています。
はこれがURLからpublicをするもなだとう。
URLをからする
server.phpをindex.phpする1. .htaccessをpublicフォルダからrootフォルダにコピーします。2. に.htaccessをのようにしする3.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]
にははpublicフォームのURLをするためにこのメソッドをしました。
オンラインでlaravelのURLからパブリックをするをむ
https://riptutorial.com/ja/laravel/topic/9786/laravelのurlからパブリックをする
https://riptutorial.com/ja/home 50
19: LinuxサーバのホスティングにLaravel 5アプリケーションをするホスティングにLaravelプロジェクトをするのについては、 このGithubレポをごください。
Examples
LinuxサーバのホスティングのLaravel 5アプリケーション
デフォルトでLaravelプロジェクトのpublicフォルダは、でもどこからでもリクエストできるアプリケーションのコンテンツをし、りのアプリケーションコードはなのないにはえないか、アクセスできません。
マシンでアプリケーションをしたは、プロダクションサーバーにプッシュしてどこからでもインターネットにアクセスできるようにするがあります。
ほとんどのアプリ/ウェブサイトでは、まずに、GoDaddy、HostGatorなどのサービスプロバイダをホストするホスティングパッケージのホスティングパッケージをすることです。
プロバイダにdocument_rootをでするようすることができるので、LaravelアプリケーションをサーバーにFTPでアップロードし、rootのを{app} / publicにするだけです。
しかし、このようなホスティングパッケージには、アクセスとファイルアクセスにがあります。デフォルトでは、ホスティングアカウントのpublic_htmlフォルダにアプリ/コードをアップロードするがあります。
Laravelプロジェクトをホスティングアカウントにアップロードしたいのであれば、どうやってそれをやりますかホスティングアカウントのpublic_htmlフォルダにアプリケーションフォルダをアップロードするがありますか - かにNO
public_htmlフォルダのすべてのものは、セキュリティのきなリスクになる「でもする」ことができるためです。
ホスティングアカウントにプロジェクトをアップロードする - Laravelの
ステップ1
public_htmlフォルダとじレベルにlaravelというフォルダまたはきなものをします。
Eg: / |--var |---www |----laravel //create this folder in your shared hosting account |----public_html |----log
https://riptutorial.com/ja/home 51
ステップ2
laravelフォルダサーバーホスト - ホスティングアカウントのlaravelプロジェクトマシンからpublicフォルダをくすべてのものをコピーします。 あなたがすることができます
Cパネルもい•
FTPクライアント FileZillaのように、ホスティングアカウントにし、FTPアップロードによってファイルとフォルダをします。
•
ネットワークドライブのマップマシンにマップされたネットワークドライブをして、ネットワークアドレスとして「 ftp// your-domain-name 」をしてホスティングアカウントのルートフォルダにすることもできます。
•
ステップ3
laravelプロジェクトのpublicフォルダをマシンでき、すべてをコピーしてpublic_htmlフォルダサーバホスト - ホスティングアカウントにりけます。 ステップ4
ホスティングアカウントcpanelエディタまたはのエディタのpublic_htmlフォルダにindex.phpファイルをき、のようにします。
する
require __DIR__.'/../bootstrap/autoload.php';
に
require __DIR__.'/../laravel/bootstrap/autoload.php';
そして
$app = require_once __DIR__.'/../bootstrap/app.php';
に
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';
してじます。
ステップ5
すぐlaravelフォルダホスティングアカウント-serverにき、 server.phpファイルをきます
する
require_once __DIR__.'/public/index.php';
に
https://riptutorial.com/ja/home 52
require_once __DIR__.'../public_html/index.php';
してじます。
ステップ6
laravel/storageフォルダにとそののすべてのファイル、サブフォルダ、ファイルをホスティングアカウント - サーバーの777ます。 linuxのファイルパーミッションにしてください。ののようなものです。しくされないと、あなたのアプリをにしてにするがあります。 Linuxファイルのパーミッションについては、 https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissionsをしてください。
ステップ7
ローカル/サーバの.envファイルはgitでされるため、APP_KEYをむすべてのをつためし、リポジトリにプッシュすることでしないでください。 .gitignoreファイルには.envが.envされているので、リポジトリにはアップロードされません。
のすべてのをした、laravelフォルダに.envファイルをし、したすべてのをローカル/サーバーの.envファイルから.envサーバーの.envファイルに.envます。
env() 2のパラメータでこのをデフォルトでするlaravelアプリケーションのconfigフォルダにapp.php 、 database.phpなどのファイルがありますが、これらのファイルのをハードコードしないでください。リポジトリをプルするユーザーのファイル。したがって、で.envファイルをすることをおめします。
また、laravelは、としてできる.env-exampleファイルをします。
それでおしまい。
サーバーでドメインとしてしたURLにアクセスすると、laravelアプリケーションはローカルホストマシンとじようにするはずですが、アプリケーションコードはで、なファイルアクセスがないユーザーはアクセスできません。
オンラインでLinuxサーバのホスティングにLaravel 5アプリケーションをするをむ
https://riptutorial.com/ja/laravel/topic/2410/linuxサーバのホスティングにlaravel-5アプリケーションをする
https://riptutorial.com/ja/home 53
20: WindowsでLaravelをしてアップロードするときのファイルの
パラメーター
パラメータ/
ファイルアップロード ファイル<input>フィールドの
$ sampleName にされる、またはユーザーがアップロードしたファイルの
app_path アプリケーションへのパスをするためのLaravelヘルパーです
getCLientOriginalExtensionユーザーがアップロードしたファイルのをするためのLaravelラッパー
Examples
ユーザーがアップロードしたファイルのタイムスタンプきファイルをします。
はWindowsマシンではしません
$file = $request->file('file_upload'); $sampleName = 'UserUpload'; $destination = app_path() . '/myStorage/'; $fileName = $sampleName . '-' . date('Y-m-d-H:i:s') . '.' . $file->getClientOriginalExtension(); $file->move($destination, $fileName);
"ファイルを/ path ...にできませんでした"のようなエラーがスローされます。
どうして - これはUbuntuサーバーでにします
そのは、Windows colon ':'はlinuxでされているファイルではされていないからです。 Ubuntu
Linuxでうまくしているコードがうまくいかないのはなぜかというがっています。 たちののいは、ファイルのパーミッションとそのようなものをチェックすることですが、 colon ':'がここでのであることにづかないかもしれません。 したがって、Windowsでファイルをアップロードするには、 タイムスタンプきファイルをするにcolon':'をしないでください。のようにしてください
$filename = $sampleName . '-' . date('Y-m-d-H_i_s') . '.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18-11_25_43.xlsx OR
https://riptutorial.com/ja/home 54
$filename = $sampleName . '-' .date('Y-m-d H i s') . '.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18 11 25 43.xlsx OR $filename = $sampleName . '-'.date('Y-m-d_g-i-A').'.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18_11-25-AM.xlsx
オンラインでWindowsでLaravelをしてアップロードするときのファイルのをむ
https://riptutorial.com/ja/laravel/topic/2629/windowsでlaravelをしてアップロードするときのファイルの
https://riptutorial.com/ja/home 55
21: イベントとリスナー
Examples
しいユーザーにメールをするためのイベントとリスナーの
LaravelのイベントではObserverパターンをできます。これは、アプリケーションにするたびに、ユーザーにウェルカムメールをするためにできます。
しいイベントとリスナーは、イベントとそののリスナーをApp\Providers\EventServiceProviderクラスにした、のコマンドラインユーティリティをしてできます。
protected $listen = [ 'App\Events\NewUserRegistered' => [ 'App\Listeners\SendWelcomeEmail', ], ];
protected $listen = [ \App\Events\NewUserRegistered::class => [ \App\Listeners\SendWelcomeEmail::class, ], ];
php artisan generate:eventします。このコマンドは、のApp\EventsとApp\Listenersディレクトリにあるすべてのするイベントとリスナーをします。
1つのイベントにのリスナーをくことができます
protected $listen = [ 'Event' => [ 'Listner1', 'Listener2' ], ];
NewUserRegisteredは、しくされたUserモデルのなるラッパークラスです。
class NewUserRegistered extends Event { use SerializesModels; public $user; /** * Create a new event instance. * * @return void */ public function __construct(User $user) {
https://riptutorial.com/ja/home 56
$this->user = $user; } }
このEventは、 SendWelcomeEmailリスナーによってされます。
class SendWelcomeEmail { /** * Handle the event. * * @param NewUserRegistered $event */ public function handle(NewUserRegistered $event) { //send the welcome email to the user $user = $event->user; Mail::send('emails.welcome', ['user' => $user], function ($message) use ($user) { $message->from('[email protected]', 'John Doe'); $message->subject('Welcome aboard '.$user->name.'!'); $message->to($user->email); }); } }
のステップは、しいユーザがするたびにイベントをびすか、またはびすことです。これは、ユーザロジックをしているコントローラ、コマンド、またはサービスでうことができます。
event(new NewUserRegistered($user));
オンラインでイベントとリスナーをむ https://riptutorial.com/ja/laravel/topic/4687/イベントとリスナー
https://riptutorial.com/ja/home 57
22: インストール
Examples
インストール
Laravelアプリケーションは、なPHPマネージャであるComposerをしてインストールおよびされます。しいLaravelアプリケーションをするには、2つのがあります。
$ composer create-project laravel/laravel [foldername]
または
$ composer create-project --prefer-dist laravel/laravel [foldername]
[foldername]に、しいLaravelアプリケーションをインストールするディレクトリのをします。インストールにしてはなりません。また、Composerファイルをシステムパスにするがあります。
のバージョンのフレームワークをしてLaravelプロジェクトをしたいは、バージョンパターンをすることができます。そうしないと、プロジェクトはのなバージョンをします。
たとえば、Laravel 5.2でプロジェクトをするは、のようにします。
$ composer create-project --prefer-dist laravel/laravel 5.2.*
なぜ--prefer-dist
パッケージをダウンロードするには、 sourceとdist 2つのがあります。の、Composerはデフォルトでdistをします。 sourceはバージョンリポジトリです。 --prefer-sourceがな、Composerはソースからインストールします。
--prefer-distは--prefer-sourceであり、 --prefer-source distからインストールするようにComposerにします。これにより、ビルドサーバーやベンダーのプログラムをはしないそののでは、インストールがにされます。また、ながないと、Gitのをできます。
Laravelインストーラをして
Laravelは、Laravelアプリケーションをすばやくするためのなコマンドラインユーティリティをします。まず、インストーラをインストールします。
$ composer global require laravel/installer
Laravelインストーラをするには、Composerバイナリフォルダが$ PATHにあることを
https://riptutorial.com/ja/home 58
するがあります。
まず、$ PATHにすでにっているかどうかべてください
echo $PATH
すべてがしければ、はのようになるはずです
Users/yourusername/.composer/vendor/bin
そうでないは、 .bashrcするか、ZSHをしているは.zshrcをして、Composerベンダーディレクトリへのパスを.zshrcます。
このコマンドをインストールすると、したディレクトリにしいLaravelインストールがされます。
laravel new [foldername]
あなたもうことができます. [foldername]のわりにドットをして、のディレクトリにサブディレクトリをせずにプロジェクトをします。
アプリケーションの
Laravelには、PHPベースのWebサーバーがバンドルされています。このWebサーバーは、
$ php artisan serve
デフォルトでは、HTTPサーバーはポート8000をしますが、ポートがにであるや、にのLaravelアプリケーションをするは、することができます--portのポートをするフラグ
$ php artisan serve --port=8080
HTTPサーバーは、アプリケーションをするためのデフォルト・ドメインとしてlocalhostをしますが、-- --hostフラグをしてのアドレスをすることができます。
$ php artisan serve --host=192.168.0.100 --port=8080
のサーバーをする
のWebサーバーソフトウェアをするは、プロジェクトのpublicディレクトリにいくつかのファイルがされています。 Apacheのは.htaccess 、ASP.NETのはweb.config 。 NGINXなどののソフトウェアの、さまざまなオンラインツールをしてApacheをできます。
このフレームワークでは、Webサーバーユーザーはのディレクトリへのきみをっているがあります。
/storage•
https://riptutorial.com/ja/home 59
/bootstrap/cache•
* nixオペレーティングシステムでは、これは
chown -R www-data:www-data storage bootstrap/cache chmod -R ug+rwx storage bootstrap/cache
www-dataはWebサーバーユーザーのとグループです
したWebサーバは、プロジェクトの/publicディレクトリのコンテンツをするようにするがあります。は、ドキュメントルートとしてします。りのプロジェクトは、Webサーバーからアクセスできないようにするがあります。
すべてをしくした、ウェブサイトのURLにすると、Laravelのデフォルトのランディングページがされます。
Laravelフレームワークにはのがあります。
5.3
PHP> = 5.6.4•XML PHP•PDO PHPエクステンション•
OpenSSL PHPエクステンション•
Mbstring PHPエクステンション•
Tokenizer PHPモジュール•
5.1LTS 5.2
PHP> = 5.5.9•PDO PHPエクステンション•
Laravel 5.1は、PHP 7.0をサポートするLaravelののバージョンです。•
5.0
PHP> = 5.4、PHP <7•
OpenSSL PHPエクステンション•
Tokenizer PHPモジュール•
Mbstring PHPエクステンション•
JSON PHPPHP 5.5のみ•
4.2
PHP> = 5.4•Mbstring PHPエクステンション•
JSON PHPPHP 5.5のみ•
https://riptutorial.com/ja/home 60
Hello Worldのコントローラとビューの
Laravelアプリケーションをする
$ composer create-project laravel/laravel hello-world
1.
プロジェクトフォルダにします。
$ cd C:\xampp\htdocs\hello-world
2.
コントローラーをする
$ php artisan make:controller HelloController --resource
3.
これによりapp / Http / Controllers / HelloController.phpファイルがされます。 --resourceオプションは、コントローラのCRUDメソッドindex、create、show、updateなどをします。
HelloControllerのindexメソッドへのルートをします。このをapp / Http / routes.php バージョン 5.05.2 またはroutes / web.php バージョン5.3にしてください
4.
Route::get('hello', 'HelloController@index');
しくされたルートをるには、 $ php artisan route:list
viewsディレクトリにブレードテンプレートをします。
resources / views / hello.blade.php
<h1>Hello world!</h1>
5.
に、 hello.blade.phpテンプレートをするようindexメソッドにします
アプリ/ Http /コントローラ/ HelloController.php
6.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; class HelloController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response
https://riptutorial.com/ja/home 61
*/ public function index() { return view('hello'); } // ... other resources are listed below the index one above
のPHP Artisan Commandをしてアプリケーションをすることができます php artisan serve ;アプリケーションにアクセスできるアドレスがされますはデフォルトでhttp// localhost8000になります 。
または、ブラウザのなにけることもできます。 XAMPP http// localhost / hello-world / public / hello
のようなサーバーをしているは、のようにxampp / htdocsディレクトリにLaravelインスタンスhello-worldをインストールするがあります。あなたのコマンドラインインターフェイスからこのHello Wordのステップ1、 xampp / htdocsディレクトリをしてください 。
Hello Worldの
ルートファイルをく。のコードをりけます。
Route::get('helloworld', function () { return '<h1>Hello World</h1>'; });
localhost/helloworldをルーティングすると、 Hello Worldがされます。
routesファイルはのにあります。
5.3
Web
routes/web.php
APIの
routes/api.php
5.2 5.1LTS 5.0
app/Http/routes.php
4.2
app/routes.php
LaraDockLaravel Homestead for Dockerをしたインストール
https://riptutorial.com/ja/home 62
LaraDockはのようなLaravel Homesteadですが、VagrantのわりにDockerのためのものです。 https://github.com/LaraDock/laradock
インストール* GitとDockerがです
LaraDockリポジトリをクローン
A.にLaravelプロジェクトをおちのは、このリポジトリをLaravelのルートディレクトリにしてください
git submodule add https://github.com/LaraDock/laradock.git
B. Laravelプロジェクトをおちでなく、DockerからLaravelをインストールするは、マシンののにこのレポをクローンしてください
git clone https://github.com/LaraDock/laradock.git
なコンテナをするdocker-composeコマンドをするにlaradockフォルダにいることをする。
NGINXとMySQLをするdocker docker-compose up -d nginx mysql
なコンテナのリストがあり、のみわせをするためにできます。
nginx 、 hhvm 、 php-fpm 、 mysql 、 redis 、 postgres 、 mariadb 、 neo4j 、 mongo 、 apache2 、 caddy 、 memcached 、 beanstalkd 、 beanstalkd-console 、 workspace
1.
Workspaceコンテナにり、Artisan、Composer、PHPUnit、Gulp、...のようなコマンドをします。
docker-compose exec workspace bash
2.
Laravelプロジェクトがまだインストールされていないは、DockerコンテナからLaravelをインストールするにいます。
a。ワークスペースコンテナをします。
b。 Laravelをインストールします。 composer create-project laravel/laravel my-cool-app "5.3.*"
3.
Laravelをします。 Laravelの.envファイルをき、DB_HOSTをmysqlにします
DB_HOST=mysql
4.
https://riptutorial.com/ja/home 63
ブラウザをき、ローカルホストのアドレスにアクセスしてください。5.
オンラインでインストールをむ https://riptutorial.com/ja/laravel/topic/7961/インストール
https://riptutorial.com/ja/home 64
23: インストールガイドこのセクションでは、laravel-5.4のと、なぜがそれをいたいのかをします。
また、laravel-5.4のきなテーマについてもし、するトピックにリンクしてください。 laravel-5.4
のドキュメントはしくなっているので、それらのトピックのバージョンをするがあります。
Examples
インストール
ララベルをセットアップまたはインストールするためのしい。
laravelをにインストールするためにはがです。
システムにlaravelをインストールするは3つあります。
Laravelインストーラで
composerをってLaravelインストーラをダウンロードする
composer global require "laravel/installer"
コンポーザをうに~/.composer/vendor/binをPATHにするがあります。インストールがしたら、 laravel newコマンドをってLaravelしいプロジェクトをすることができます。
laravel new {folder name}
このコマンドは、 siteというのしいディレクトリをし、のすべてのをつしくインストールされたLaravelがディレクトリにインストールされます。
1.
Composer Create-Projectをして
terminalのコマンドをしてしいLaravel appをすることができます
composer create-project laravel/laravel {folder name}
2.
ダウンロード
Laravelをダウンロードしてします。
composer install1.
コピー.env.exampleする.envteminalまたは。
cp .env.example .env
2.
3.
https://riptutorial.com/ja/home 65
.envファイルをき、データベース、メール、プッシャーなどをしますな3. php artisan migrate データベースがされている4. php artisan key:generate5. php artisan serve6.
サイトをするにはlocalhost8000にしてください7.
Laravel docs
Hello Worldの
Laravelでは、ページにアクセスしてデータをするのはです。すべてのページルートはapp/routes.php 。、いくつかのがありますが、しいルートをします。 app/routes.phpき、のコードをりけてください
Route::get('helloworld', function () { return '<h1>Hello World</h1>'; });
これはLaravelに、ブラウザでhttp://localhost/helloworldにアクセスするときにをし、されたをすようにします。
ビューとコントローラによるHello Worldの
えば "mylaravel.com"でくlaravelアプリケーションがあるとすると、URL
http://mylaravel.com/helloworldアクセスしたときにアプリケーションに "Hello World"メッセージがされます。これには、2つのファイルビューとコントローラのと、のファイルであるルーターのがまれます。
に、 helloview.blade.phpというのしいブレードビューファイルを "Hello World"できます。 app /
resources / viewsディレクトリにします
<h1>Hello, World</h1>
コントローラ
に、 "Hello World"でそのビューのをするコントローラをします。コマンドラインでをします。
$> cd your_laravel_project_root_directory $> php artisan make:controller HelloController
これは、しいコントローラHelloControllerあるクラスをむファイル
app/Http/Controllers/HelloController.php をするだけHelloController 。
そのしいファイルをし、したビューをするしいメソッドhelloをします。
public function hello()
https://riptutorial.com/ja/home 66
{ return view('helloview'); }
viewの 'helloview'は、ろの ".blade.php"のないビューファイルのだけです。ラーヴェルはそれをつけるをっている。
に、 HelloControllerコントローラのhelloメソッドをびすと、メッセージがされます。しかし、それをhttp://mylaravel.com/helloworldへのびしにどのようにリンクさせますかのステップでは、ルーティング。
ルータ
のファイルapp/routes/web.php バージョンのlaravelバージョンのapp/Http/routes.php をき、のをします
Route::get('/helloworld', 'HelloController@hello');
これはたちのlaravelアプリケーションにっているになコマンドです "かがこのlaravelアプリケーションで '/ helloworld'にアクセスするためにGETをする、 HelloControllerコントローラでhelloをびしたをします。
オンラインでインストールガイドをむ https://riptutorial.com/ja/laravel/topic/2187/インストールガイド
https://riptutorial.com/ja/home 67
24: エラーconfig/mail.phpにされていることをして、メールにアプリケーションをしてください
また、ENVがしくされていることをしてください。
このはガイドであり、です。にじて、ビューを、、スタイルをします。ニーズにわせてコードをします。たとえば、を.envファイルにします
Examples
エラーレポートメールをする
LaravelのはApp \ Exceptions \ Handler.phpによってされます
このファイルには、デフォルトで2つのがまれています。レポートレンダリング。たちはの
public function report(Exception $e)
レポートメソッドは、をするか、BugSnagのようなサービスにするためにされます。デフォルトでは、レポートメソッドは、がログにされるクラスにをします。ただし、にじてをすることはです。
に、このはにエラーをし、もしません。したがって、エラーにづいてをするビジネスロジックをできます。このでは、エラーをむメールをします。
public function report(Exception $e) { if ($e instanceof \Exception) { // Fetch the error information we would like to // send to the view for emailing $error['file'] = $e->getFile(); $error['code'] = $e->getCode(); $error['line'] = $e->getLine(); $error['message'] = $e->getMessage(); $error['trace'] = $e->getTrace(); // Only send email reports on production server if(ENV('APP_ENV') == "production"){ #1. Queue email for sending on "exceptions_emails" queue #2. Use the emails.exception_notif view shown below #3. Pass the error array to the view as variable $e Mail::queueOn('exception_emails', 'emails.exception_notif', ["e" => $error], function ($m) { $m->subject("Laravel Error"); $m->from(ENV("MAIL_FROM"), ENV("MAIL_NAME")); $m->to("[email protected]", "Webmaster"); }); }
https://riptutorial.com/ja/home 68
} // Pass the error on to continue processing return parent::report($e); }
メールのビュー "emails.exception_notif"はのとおりです
<?php $action = (\Route::getCurrentRoute()) ? \Route::getCurrentRoute()->getActionName() : "n/a"; $path = (\Route::getCurrentRoute()) ? \Route::getCurrentRoute()->getPath() : "n/a"; $user = (\Auth::check()) ? \Auth::user()->name : 'no login'; ?> There was an error in your Laravel App<br /> <hr /> <table border="1" width="100%"> <tr><th >User:</th><td>{{ $user }}</td></tr> <tr><th >Message:</th><td>{{ $e['message'] }}</td></tr> <tr><th >Action:</th><td>{{ $action }}</td></tr> <tr><th >URI:</th><td>{{ $path }}</td></tr> <tr><th >Line:</th><td>{{ $e['line'] }}</td></tr> <tr><th >Code:</th><td>{{ $e['code'] }}</td></tr> </table>
アプリケーションをするModelNotFoundException
app \ Exceptions \ Handler.php
public function render($request, Exception $exception) { if ($exception instanceof ModelNotFoundException) { abort(404); } return parent::render($request, $exception); }
Laravelでスローされたを/できます。
オンラインでエラーをむ https://riptutorial.com/ja/laravel/topic/2858/エラー
https://riptutorial.com/ja/home 69
25: カスタムヘルパー
き
カスタムヘルパーをすることで、スピードをさせることができます。そのようなヘルパーをくときにすべきことがいくつかあります。したがって、このチュートリアルです。
ちょっとした
サービスプロバイダが2びされたときのをぐために、をチェック function_exists にれました。
•
わりのは、 composer.jsonファイルからヘルパーファイルをすることです。 laravelフレームワークからロジックをコピーすることができます。
•
Examples
document.php
<?php if (!function_exists('document')) { function document($text = '') { return $text; } }
helpers.phpファイルをし、 app/Helpers/document.phpするとしましょう。あなたは1つのファイルにくのヘルパーをくことができますこれがLaravelのやりです、ですることもできます。
HelpersServiceProvider.php
に、サービスプロバイダをしましょう。 app/Providersにいてみましょう
<?php namespace App\Providers; class HelpersServiceProvider extends ServiceProvider { public function register() { require_once __DIR__ . '/../Helpers/document.php'; } }
のサービスプロバイダはヘルパーファイルをみみ、カスタムをにします。 providersのconfig/app.phpこのHelpersServiceProviderをしてください
https://riptutorial.com/ja/home 70
'providers' => [ // [..] other providers App\Providers\HelpersServiceProvider::class, ]
つかいます
これで、document()コードのどこでも、たとえばブレードテンプレートでできます。このでは、としてけったのとじのみをします
<?php Route::get('document/{text}', function($text) { return document($text); });
はブラウザの/document/fooにきます php artisan serveまたはvaletしてください。これはfooをします。
オンラインでカスタムヘルパーをむ https://riptutorial.com/ja/laravel/topic/8347/カスタムヘルパー
https://riptutorial.com/ja/home 71
26: キュー
き
キューをすると、バックグラウンドプロセスでするのにがかかるのビットをアプリケーションがすることができます。
Examples
ユースケース
たとえば、タスクをしたににメールをするは、メールをバックグラウンドでキューにれながら、ユーザーをすぐにのページにリダイレクトすることをおめします。メールのにのがかかることがあるため、のページのみみがされます。
もう1つのは、がをチェックアウトしたにシステムをすることです。 APIびしがするのをつのではなく、かかるかもしれませんが、すぐにユーザーをチェックアウトページにリダイレクトして、APIびしをバックグラウンドでちにれることができます。
キュードライバの
Laravelのキュードライバはconfig/queue.phpファイルからされています。キュードライバは、キューにれられたジョブのをし、ジョブがしたかしたかをし、そうするようにされているはジョブをするハンドラです。
Laravelは、そのままので、のキュードライバをサポートしています。
sync
またはは、のプロセスでキューにれられたジョブをするデフォルトのキュードライバです。このドライバをにすると、キューにれられたジョブがすぐにされるため、キューがになくなります。これは、ローカルまたはテストのにはですが、キューをすることによるパフォーマンスのがなくなるため、プロダクションではおめできません。
database
このドライバは、キューにれられたジョブをデータベースにします。このドライバをにするに、キューにされたジョブとしたジョブをするデータベーステーブルをするがあります。
php artisan queue:table php artisan migrate
sqs
https://riptutorial.com/ja/home 72
このキュードライバはAmazonのSimple Queue Serviceをして、キューにれられたジョブをします。このジョブをにするに、のコンポーザパッケージをインストールするがありますaws/aws-sdk-php ~3.0
また、キューにされたジョブにをするの、Amazon SQSは15のしかサポートしないことにもしてください。
iron
このキュードライバは、 Ironをして、キューにれられたジョブをします。
redis
このキュードライバは、 Redisのインスタンスをして、キューにれられたジョブをします。このキュードライバをするに、Redisのコピーをし、のコンポーザをインストールするがあります predis/predis ~1.0
beanstalkd
このキュー・ドライバは、 Beanstalkのインスタンスをして、キューにれられたジョブをします。このキュードライバをするに、Beanstalkのコピーをし、のコンポーザをインストールするがあります pda/pheanstalk ~3.0
null
キュードライバとしてnullをすると、キューにれられたジョブはすべてされます。
オンラインでキューをむ https://riptutorial.com/ja/laravel/topic/2651/キュー
https://riptutorial.com/ja/home 73
27: クロスドメインリクエスト
Examples
き
ラーベールでAPIのクロスドメインリクエストがなもあります。なヘッダーをして、クロスドメインをにさせるがあります。したがって、するヘッダーがでなければ、APIがになるようにするがあります。ヘッダーをするには、なヘッダーをしてをするlaravelにミドルウェアをするがあります。
CorsHeaders
<?php namespace laravel\Http\Middleware; class CorsHeaders { /** * This must be executed _before_ the controller action since _after_ middleware isn't executed when exceptions are thrown and caught by global handlers. * * @param $request * @param \Closure $next * @param string [$checkWhitelist] true or false Is a string b/c of the way the arguments are supplied. * @return mixed */ public function handle($request, \Closure $next, $checkWhitelist = 'true') { if ($checkWhitelist == 'true') { // Make sure the request origin domain matches one of ours before sending CORS response headers. $origin = $request->header('Origin'); $matches = []; preg_match('/^(https?:\/\/)?([a-zA-Z\d]+\.)*(?<domain>[a-zA-Z\d-\.]+\.[a-z]{2,10})$/', $origin, $matches); if (isset($matches['domain']) && in_array($matches['domain'], ['yoursite.com']) { header('Access-Control-Allow-Origin: ' . $origin); header('Access-Control-Expose-Headers: Location'); header('Access-Control-Allow-Credentials: true'); // If a preflight request comes then add appropriate headers if ($request->method() === 'OPTIONS') { header('Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS, DELETE, PATCH'); header('Access-Control-Allow-Headers: ' . $request->header('Access-Control-Request-Headers')); // 20 days header('Access-Control-Max-Age: 1728000'); } } } else {
https://riptutorial.com/ja/home 74
header('Access-Control-Allow-Origin: *'); } return $next($request); } }
オンラインでクロスドメインリクエストをむ https://riptutorial.com/ja/laravel/topic/7425/クロスドメインリクエスト
https://riptutorial.com/ja/home 75
28: コレクション$ collection = collect['Value1'、 'Value2'、 'Value3']; //キーのデフォルトは0,1,2、...、•
Illuminate\Support\Collectionは、データのをうためのかつなインターフェイスをします。たとえば、のレコードをするモデルクエリでは、 Illuminate\Support\Collectionインスタンスがされます。
コレクションにするのドキュメントについては、のドキュメントをここでつけることができます
Examples
コレクションをする
collect()ヘルパーをすると、のようなをすことでにしいコレクションインスタンスをできます。
$fruits = collect(['oranges', 'peaches', 'pears']);
ヘルパーをしたくないは、クラスをしてしいコレクションをできます。
$fruits = new Illuminate\Support\Collection(['oranges', 'peaches', 'pears']);
でべたように、モデルはデフォルトでCollectionインスタンスをしますが、にじてのコレクションをにできます。にがされていない、のCollectionがされます。
ここで、
コレクションからのアイテムをするには、 where()メソッドをします。
$data = [ ['name' => 'Taylor', 'coffee_drinker' => true], ['name' => 'Matt', 'coffee_drinker' => true] ]; $matt = collect($data)->where('name', 'Matt');
このコードは、が「Matt」のコレクションからすべてのアイテムをします。この、2ののみがされます。
ネスティングLaravelのほとんどのメソッドとにwhere()はネストされたのもサポートしています。のを2のをしてしましょう
https://riptutorial.com/ja/home 76
$data = [ ['name' => 'Taylor', 'coffee_drinker' => ['at_work' => true, 'at_home' => true]], ['name' => 'Matt', 'coffee_drinker' => ['at_work' => true, 'at_home' => false]] ]; $coffeeDrinkerAtHome = collect($data)->where('coffee_drinker.at_home', true);
これはがでコーヒーをむので、テイラーだけをすでしょう。ごのように、ネスティングはドットをしてサポートされています。
ではなくオブジェクトのCollectionをするは、 where()もしてフィルタリングできます。コレクションは、に、すべてのましいプロパティをけろうとします。
5.3
Laravel 5.3、 where()メソッドはデフォルトでをやかにしようとします。つまり、 (int)1すると、 '1'をむすべてのエントリもにされます。そのがにらないは、 whereStrict()メソッドをできます。
Getをしてをするか、デフォルトをす
あなたは、にするをつけるがあるにすることがよくあります。
のでは、に3つのなるロケールがあり、するびしコードがりてられています。たちはロケールをできるようにしたいが、そのわりにするびしコードをする。のパラメータがつからない、 getの2のパラメータはデフォルトのパラメータです。
function lookupCallingCode($locale) { return collect([ 'de_DE' => 49, 'en_GB' => 44, 'en_US' => 1, ])->get($locale, 44); }
のでは、をうことができます
lookupCallingCode('de_DE'); // Will return 49 lookupCallingCode('sv_SE'); // Will return 44
コールバックをデフォルトとしてすことさえできます。されたキーがしない、コールバックのがされます。
return collect([ 'de_DE' => 49, 'en_GB' => 44, 'en_US' => 1, ])->get($locale, function() { return 44;
https://riptutorial.com/ja/home 77
});
Containsをして、コレクションがのをたすかどうかをチェックします。
なは、すべてがのをたすがあるアイテムのコレクションをつことです。のでは、プランの2つのアイテムをしました。このダイエットにながまれていないことをしたいとえています。
// First we create a collection $diet = collect([ ['name' => 'Banana', 'calories' => '89'], ['name' => 'Chocolate', 'calories' => '546'] ]); // Then we check the collection for items with more than 100 calories $isUnhealthy = $diet->contains(function ($i, $snack) { return $snack["calories"] >= 100; });
の、 $isUnhealthyはチョコレートがをたすのでtrueにされ、したがってはではありません。
のをコレクションからするためにPluckをする
あなたはしばしば、データのだけにがあるデータのまりをつけるでしょう。
のでは、イベントののリストをしました。ツアーガイドになリストをしたいとえています。
// First we collect the participants $participants = collect([ ['name' => 'John', 'age' => 55], ['name' => 'Melissa', 'age' => 18], ['name' => 'Bob', 'age' => 43], ['name' => 'Sara', 'age' => 18], ]); // Then we ask the collection to fetch all the names $namesList = $partcipants->pluck('name') // ['John', 'Melissa', 'Bob', 'Sara'];
オブジェクトのコレクションやドットのネストされた/オブジェクトのには、 pluckをすることもできます。
$users = User::all(); // Returns Eloquent Collection of all users $usernames = $users->pluck('username'); // Collection contains only user names $users->load('profile'); // Load a relationship for all models in collection // Using dot notation, we can traverse nested properties $names = $users->pluck('profile.first_name'); // Get all first names from all user profiles
Mapをしてコレクションのをする
https://riptutorial.com/ja/home 78
くの、のデータをしてのをするがあります。
のでは、がされたのコレクションをしました。しかし、たちはむしろすでにきされているのリストをっています。
$books = [ ['title' => 'The Pragmatic Programmer', 'price' => 20, 'discount' => 0.5], ['title' => 'Continuous Delivery', 'price' => 25, 'discount' => 0.1], ['title' => 'The Clean Coder', 'price' => 10, 'discount' => 0.75], ]; $discountedItems = collect($books)->map(function ($book) { return ['title' => $book["title"], 'price' => $book["price"] * $book["discount"]]; }); //[ // ['title' => 'The Pragmatic Programmer', 'price' => 10], // ['title' => 'Continuous Delivery', 'price' => 12.5], // ['title' => 'The Clean Coder', 'price' => 5], //]
これはまた、キーをするためにすることもできます。これは、キーtitleをなにするnameにしたいとします。
コレクションの、、またはをにする
また、コレクションをすると、なをにうことができます。
$books = [ ['title' => 'The Pragmatic Programmer', 'price' => 20], ['title' => 'Continuous Delivery', 'price' => 30], ['title' => 'The Clean Coder', 'price' => 10], ] $min = collect($books)->min('price'); // 10 $max = collect($books)->max('price'); // 30 $avg = collect($books)->avg('price'); // 20 $sum = collect($books)->sum('price'); // 60
コレクションのべえ
コレクションをソートするには、いくつかのがあります。
ソートsortメソッドは、コレクションをソートします。
$collection = collect([5, 3, 1, 2, 4]); $sorted = $collection->sort();
https://riptutorial.com/ja/home 79
echo $sorted->values()->all(); returns : [1, 2, 3, 4, 5]
sortメソッドをすると、のアルゴリズムでカスタムコールバックをすこともできます。フードのでソートはusortソートをします。
$collection = $collection->sort(function ($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; });
びえsortByメソッドは、コレクションをされたキーでソートします。
$collection = collect([ ['name' => 'Desk', 'price' => 200], ['name' => 'Chair', 'price' => 100], ['name' => 'Bookcase', 'price' => 150], ]); $sorted = $collection->sortBy('price'); echo $sorted->values()->all(); returns: [ ['name' => 'Chair', 'price' => 100], ['name' => 'Bookcase', 'price' => 150], ['name' => 'Desk', 'price' => 200], ]
sortByメソッドをすると、をソートするためにドットをしてよりいキーにアクセスできます。
$collection = collect([ ["id"=>1,"product"=>['name' => 'Desk', 'price' => 200]], ["id"=>2, "product"=>['name' => 'Chair', 'price' => 100]], ["id"=>3, "product"=>['name' => 'Bookcase', 'price' => 150]], ]); $sorted = $collection->sortBy("product.price")->toArray(); return: [ ["id"=>2, "product"=>['name' => 'Chair', 'price' => 100]], ["id"=>3, "product"=>['name' => 'Bookcase', 'price' => 150]], ["id"=>1,"product"=>['name' => 'Desk', 'price' => 200]], ]
SortByDesc
https://riptutorial.com/ja/home 80
このメソッドは、 sortByメソッドとじシグネチャをちますが、のでコレクションをソートします。
reduceをすると、
reduceメソッドは、コレクションをのにらし、のをのにします。 reduceメソッドをしてください。
reduceメソッドは、アイテムをコレクションでループし、のりしにしいをします。のからのは、のパラメータのでは、 $carryとしてされますにされます。
このは、きなデータセットにしてくのをうことができます。たとえば、のでは、データのをします。
$student = [ ['class' => 'Math', 'score' => 60], ['class' => 'English', 'score' => 61], ['class' => 'Chemistry', 'score' => 50], ['class' => 'Physics', 'score' => 49], ];
のの
$sum = collect($student) ->reduce(function($carry, $item){ return $carry + $item["score"]; }, 0);
220
$carryはののです。•2のパラメータは、1のりしでの$ carryのデフォルトです。この、デフォルトは0です•
すべてのが50の、をす
$isPass = collect($student) ->reduce(function($carry, $item){ return $carry && $item["score"] >= 50; }, true);
false
$ carryのデフォルトはtrueです•
すべてのスコアが50よりきい、はtrueをします。 50のはfalseをします。•
いずれかのスコアが50の、をにする
$isFail = collect($student) ->reduce(function($carry, $item){ return $carry || $item["score"] < 50; }, false);
https://riptutorial.com/ja/home 81
true
$ carryのデフォルトはfalseです。•
スコアが50のはtrueをします。すべてのスコアが50よりきいはfalseをします。•
をす
$highestSubject = collect($student) ->reduce(function($carry, $item){ return $carry === null || $item["score"] > $carry["score"] ? $item : $carry; });
[ "subject" => "English", "score" => 61 ]
この、2のパラメータはされません。•
$ carryのデフォルトはnullなので、たちはきでそれをチェックします。•
マクロをってコレクションをする
macro()をすると、 Illuminate\Support\Collectionオブジェクトにしいをできます
Collection::macro("macro_name", function ($parameters) { // Your macro });
えば
Collection::macro('uppercase', function () { return $this->map(function ($item) { return strtoupper($item); }); }); collect(["hello", "world"])->uppercase();
["HELLO", "WORLD"]
の
CollectionオブジェクトはArrayAccessおよびIteratorAggregateインターフェイスをArrayAccessし、のようにできます。
アクセスコレクション
$collection = collect([1, 2, 3]); $result = $collection[1];
2
しいをりてる
https://riptutorial.com/ja/home 82
$collection = collect([1, 2, 3]); $collection[] = 4;
$collectionは[1, 2, 3, 4]
ループコレクション
$collection = collect(["a" => "one", "b" => "two"]); $result = ""; foreach($collection as $key => $value){ $result .= "(".$key.": ".$value.") "; }
$resultは(a: one) (b: two)
からコレクションへの
コレクションをネイティブのPHPにするには、をします。
$array = $collection->all(); //or $array = $collection->toArray()
をコレクションにするには、をします。
$collection = collect($array);
によるコレクションの
コレクションは、 array_map($callback)ような、にをとするによってされた、しくされないのオブジェクトであることにしてください。
コレクションをにするか、またはであればCollectionクラスがするメソッドをしてください。 $collection->map($callback)
オンラインでコレクションをむ https://riptutorial.com/ja/laravel/topic/2358/コレクション
https://riptutorial.com/ja/home 83
29: コントローラ
き
リクエストロジックのすべてをルートファイルのClosuresとしてするのではなく、Controllerクラスをしてこのるいをすることができます。コントローラは、するリクエストロジックを1つのクラスにまとめることができます。コントローラはデフォルトでapp/Http/Controllersディレクトリにされます。
Examples
なコントローラ
<?php namespace App\Http\Controllers; use App\User; use App\Http\Controllers\Controller; class UserController extends Controller { /** * Show the profile for the given user. * * @param int $id * @return Response */ public function show($id) { return view('user.profile', ['user' => User::findOrFail($id)]); } }
このコントローラアクションへのルートをのようにすることができます
Route::get('user/{id}', 'UserController@show');
リクエストがされたルートURIとすると、 UserControllerクラスのshowメソッドがされます。もちろん、ルートパラメータもメソッドにされます。
コントローラミドルウェア
ミドルウェアは、ルートファイルのコントローラのルートにりてることができます。
Route::get('profile', 'UserController@show')->middleware('auth');
ただし、コントローラのコンストラクタでミドルウェアをするほうがです。コントローラのコンストラクタのミドルウェアメソッドをすると、ミドルウェアをコントローラのアクションににり
https://riptutorial.com/ja/home 84
てることができます。
class UserController extends Controller { /** * Instantiate a new controller instance. * * @return void */ public function __construct() { $this->middleware('auth'); $this->middleware('log')->only('index'); $this->middleware('subscribed')->except('store'); } }
リソース・コントローラ
Laravelのリソースルーティングは、な "CRUD"ルートを1のコードでコントローラにりてます。たとえば、アプリケーションによってされた ""のすべてのHTTPをするコントローラをすることができます。 make:controller Artisanコマンドをして、このようなコントローラをくすることができます
php artisan make:controller PhotoController --resource
このコマンドは、 app/Http/Controllers/PhotoController.phpます。コントローラには、なリソースのためのメソッドがまれます。
リソース・コントローラーのの
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PhotoController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // } /** * Show the form for creating a new resource. *
https://riptutorial.com/ja/home 85
* @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { //
https://riptutorial.com/ja/home 86
} }
リソースコントローラのは、ののメソッドをしています。
に、コントローラへのなルートをすることができます。
Route::resource('photos', 'PhotoController');
このルートは、リソースのさまざまなアクションをするのルートをします。されたコントローラーには、HTTPとするURIをするをむ、これらのアクションごとにスタブされたメソッドがにされています。
リソース・コントローラーによってされるアクション
URI アクション ルート
する /photos photos.index
する /photos/create する photos.create
/photos photos.store
する /photos/{photo} ショー photos.show
する /photos/{photo}/edit photos.edit
PUT / PATCH /photos/{photo} photos.update
/photos/{photo} する photos.destroy
オンラインでコントローラをむ https://riptutorial.com/ja/laravel/topic/10604/コントローラ
https://riptutorial.com/ja/home 87
30: サービス
Examples
き
Laravelは、サービスとばれるさまざまなクラスへのアクセスをします。のサービスはすぐにできますが、あなたですることができます。
サービスは、コントローラのようなアプリケーションののファイルでできます。サービスOurServiceがをすgetNumber()メソッドをしているとしましょう
class SomeController extends Controller { public function getRandomNumber() { return app(OurService::class)->getNumber(); } }
サービスをするには、しいクラスをするがあります。
# app/Services/OurService/OurService.php <?php namespace App\Services\OurService; class OurService { public function getNumber() { return rand(); } }
では、すでにこのサービスをコントローラでできますが、になるたびにしいオブジェクトをインスタンスするがあります。
class SomeController extends Controller { public function getRandomNumber() { $service = new OurService(); return $service->getNumber(); } public function getOtherRandomNumber() { $service = new OurService(); return $service->getNumber(); }
https://riptutorial.com/ja/home 88
}
そのため、 サービスコンテナにサービスをするのがのステップです。サービスをサービスコンテナにすると、なときにいつでもしいオブジェクトをするはありません。
サービスコンテナにサービスをするには、 サービスプロバイダをするがあります 。このサービスプロバイダは、
サービスをメソッドでサービスコンテナにする 1.
ブートをしてサービスにのサービスをします2.
サービスプロバイダは、クラスIlluminate\Support\ServiceProviderしたクラスです。サービスをService Containerにするには、 register()メソッドをするがあります。
# app/Services/OurService/OurServiceServiceProvider.php <?php namespace App\Services\OurService; use Illuminate\Support\ServiceProvider; class OurServiceServiceProvider extends ServiceProvider { public function register() { $this->app->singleton('OurService', function($app) { return new OurService(); }); } }
すべてのサービスプロバイダはconfig/app.phpにされます。サービスプロバイダをこのにするがあります
return [ ... 'providers' => [ ... App\Services\OurService\OurServiceServiceProvider::class, ... ], ... ];
これでコントローラでサービスにアクセスできるようになりました。 3つの
1.
https://riptutorial.com/ja/home 89
<?php namespace App\Http\Controllers; use App\Services\OurService\OurService; class SomeController extends Controller { public function __construct(OurService $our_service) { dd($our_service->getNumber()); } }
app()ヘルパーのアクセス2.
<?php namespace App\Http\Controllers; use App\Services\OurService\OurService; class SomeController extends Controller { public function getRandomNumber() { return app('OurService')->getNumber(); } }
Laravelは、すべてのプロジェクトででき、サービスをできるFacades、のクラスをします。あなたのサービスにもっとにアクセスするために、ファサードをすることができます
<?php namespace App\Http\Controllers; use Randomisator; class SomeController extends Controller { public function getRandomNumber() { return Randomisator::getNumber(); } }
しいファサードをするには、 Illuminate\Support\Facades\Facadeするしいクラスをするがあります。このクラスは、 getFacadeAccessor()メソッドをし、 サービスプロバイダによってされたサービスのをすがあります 。
# app/Services/OurService/OurServiceFacade.php <?php namespace App\Services\OurService; use Illuminate\Support\Facades\Facade;
https://riptutorial.com/ja/home 90
class OurServiceFacade extends Facade { protected static function getFacadeAccessor() { return 'OurService'; } }
あなたはファサードをconfig/app.phpにするもあります
return [ ... 'aliases' => [ .... 'Randomisator' => App\Services\OurService\OurServiceFacade::class, ], ];
Facadeはプロジェクトのどこにでもアクセスできます。
ビューからサービスにアクセスするには、ヘルパーをします。 Laravelには、 auth()やview()のような、いくつかのヘルパーがされています。ヘルパーをするには、しいファイルをします。
# app/Services/OurService/helpers.php if (! function_exists('randomisator')) { /** * Get the available OurService instance. * * @return \App\ElMatella\FacebookLaravelSdk */ function randomisator() { return app('OurService'); } }
このファイルをするがありますが、 composer.jsonファイルにするがあります
{ ... "autoload": { "files": [ "app/Services/OurService/helpers.php" ], ... }
https://riptutorial.com/ja/home 91
}
このヘルパーをビューでできるようになりました。
<h1>Here is a random number: {{ randomisator()->getNumber() }}</h1>
オンラインでサービスをむ https://riptutorial.com/ja/laravel/topic/1907/サービス
https://riptutorial.com/ja/home 92
31: サービス
Examples
インプリメンテーションへのインタフェースのバインド
サービスプロバイダregisterメソッドでは、インタフェースをにバインドできます。
public function register() { App::bind( UserRepositoryInterface::class, EloquentUserRepository::class ); }
は、アプリケーションがUserRepositoryInterfaceインスタンスをとするUserRepositoryInterface 、LaravelはにEloquentUserRepositoryしいインスタンスをします
//this will get back an instance of EloquentUserRepository $repo = App::make( UserRepositoryInterface:class );
インスタンスのバインド
サービスコンテナをレジストリとしてすると、オブジェクトのインスタンスをバインドし、なときにすことができます。
// Create an instance. $john = new User('John'); // Bind it to the service container. App::instance('the-user', $john); // ...somewhere and/or in another class... // Get back the instance $john = App::make('the-user');
サービスコンテナへのシングルトンのバインド
クラスをシングルトンとしてバインドすることができます
public function register() { App::singleton('my-database', function() { return new Database(); }); }
このようにして、めて'my-database'インスタンスがサービスコンテナにされると、しいインスタ
https://riptutorial.com/ja/home 93
ンスがされます。このクラスのすべてのしたは、にされたインスタンスをします。
//a new instance of Database is created $db = App::make('my-database'); //the same instance created before is returned $anotherDb = App::make('my-database');
き
サービスコンテナがなアプリケーションオブジェクトです。これは、サービスプロバイダのバインディングをすることによって、アプリケーションのコンテナおよびレジストリとしてできます
サービスプロバイダは、アプリケーションをじてサービスクラスをし、そのをブートストラップし、インプリメンテーションにインターフェイスをバインドするをするクラスです
サービスは、1つまたはのロジックタスクをまとめてラップするクラスです。
サービスコンテナをコンテナとしてする
をつオブジェクトのプロセスをアプリケーションの1つのポイントにバインドすることによって、サービスコンテナをコンテナとしてできます
PdfCreatorのに2つのオブジェクトがするがあるとしましょう。 PdfCreatorインスタンスをビルドするがあるPdfCreator 、これらのをcheコンストラクタにすがあります。サービスコンテナをDIC
としてすることによって、バインディングでPdfCreatorのをし、サービスコンテナからなをします。
App:bind('pdf-creator', function($app) { // Get the needed dependencies from the service container. $pdfRender = $app->make('pdf-render'); $templateManager = $app->make('template-manager'); // Create the instance passing the needed dependencies. return new PdfCreator( $pdfRender, $templateManager ); });
に、たちのアプリのあらゆるで、しいPdfCreatorをするPdfCreator 、たちはにうことができます
$pdfCreator = App::make('pdf-creator');
また、Serviceコンテナは、なとともに、しいインスタンスをします。
オンラインでサービスをむ https://riptutorial.com/ja/laravel/topic/1908/サービス
https://riptutorial.com/ja/home 94
32: シードデータベースのシードでは、データ、なテストデータをデータベースにできます。デフォルトでは、 database/seedsにDatabaseSeederクラスがありdatabase/seeds 。
のシーダーは
php artisan db:seed
または、のクラスだけをしたい
php artisan db:seed --class=TestSeederClass
すべてののコマンドとに、 APIのドキュメントにあるさまざまなメソッドにアクセスできます
Examples
データの
データをするはいくつかあります。
DBファサードの
public function run() { DB::table('users') ->insert([ 'name' => 'Taylor', 'age' => 21 ]); }
モデルをインスタンスする
public function run() { $user = new User; $user->name = 'Taylor'; $user->save(); }
createメソッドの
public function run()
https://riptutorial.com/ja/home 95
{ User::create([ 'name' => 'Taylor', 'age' => 21 ]); }
をして
public function run() { factory(App\User::class, 10)->create(); }
いデータのシードとインクリメントのリセット
public function run() { DB::table('users')->delete(); DB::unprepared('ALTER TABLE users AUTO_INCREMENT=1;'); factory(App\User::class, 200)->create(); }
データの/のについては、 のをしてください。
のシーダーにする
DatabaseSeederクラスで、のシーダーをびすことができます
$this->call(TestSeeder::class)
これにより、シーダーをにつけることができるに1つのファイルをできます。キーのにするコールのにするがあることにしてください。まだしないテーブルはできません。
シーダーの
シーダーをするには、 make:seeder Artisanコマンドをします。されたすべてのシーダーは、 database/seedsディレクトリーにされdatabase/seeds 。
$ php artisan make:seeder MoviesTableSeeder
されたシーダーには、1つのメソッドがまれrun 。このでデータベースにデータをすることができます。
<?php use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model;
https://riptutorial.com/ja/home 96
class MoviesTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { App\Movie::create([ 'name' => 'A New Hope', 'year' => '1977' ]); App\Movie::create([ 'name' => 'The Empire Strikes Back', 'year' => '1980' ]); } }
には、 DatabaseSeederクラスのすべてのシーダーをびすがあります。
シーダーのがわったら、 db:seedコマンドをします。これにより、 DatabaseSeederのrunがrunます。
$ php artisan db:seed
また、の--classクラスをして、 - --classオプションをしてにするようにすることもできます。
$ php artisan db:seed --class=UserSeeder
すべてのをロールバックしてしてからするは、のようにします。
$ php artisan migrate:refresh --seed
migrate:refresh --seedコマンドは、の3つのコマンドのショートカットです。
$ php artisan migrate:reset # rollback all migrations $ php artisan migrate # run migrations $ php artisan db:seed # run seeders
な
にしたシードにをえずにデータベースをシードすることができます。こののために、シーダーでfirstOrCreateをすることができます
EmployeeType::firstOrCreate([ 'type' => 'manager', ]);
https://riptutorial.com/ja/home 97
に、データベースをシードできます。
php artisan db:seed
で、のタイプのをするは、そのしいファイルをじファイルにするだけです。
EmployeeType::firstOrCreate([ 'type' => 'manager', ]); EmployeeType::firstOrCreate([ 'type' => 'secretary', ]);
また、なくデータベースをシードします。
php artisan db:seed
のびしで、レコードをしているのにもしていないことにしてください。
オンラインでシードをむ https://riptutorial.com/ja/laravel/topic/3272/シード
https://riptutorial.com/ja/home 98
33: ストレージのアクセス
き
Laravelは、Webサーバーユーザーのためにきみなフォルダがです。
Examples
また、 serverのstorageファイルにしてしいアクセスをするがありserver 。したがって、のようにストレージディレクトリにきみをえるがあります。
$ chmod -R 777 ./storage ./bootstrap
またはすることができます
$ sudo chmod -R 777 ./storage ./bootstrap
ウィンドウの
きみなアクセスをつそのコンピュータのユーザーであることをしてください
xampp\htdocs\laravel\app\storage needs to be writable
パーミッションをするのは、Webサーバーがファイルをすることです。
sudo chown -R www-data:www-data /path/to/your/root/directory
オンラインでストレージのアクセスをむ https://riptutorial.com/ja/laravel/topic/9797/ストレージのアクセス
https://riptutorial.com/ja/home 99
34: タスクスケジューリング
Examples
タスクの
ArtisanをしてLaravelでタスクコンソールコマンドをすることができます。あなたのコマンドラインから
php artisan make:console MyTaskName
これにより、 app / Console / Commands / MyTaskName.phpにファイルがされます。それはのようになります
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class MyTaskName extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'command:name'; /** * The console command description. * * @var string */ protected $description = 'Command description'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() {
https://riptutorial.com/ja/home 100
// } }
こののなはのとおりです。
$signatureプロパティは、あなたのコマンドをするものです。 Artisanをしてコマンドラインでphp artisan command:nameをすると、このコマンドをですることができますphp artisan
command:name command:nameコマンドの$signatureします
•
$descriptionプロパティは、コマンドがになったときに、そのコマンドのにあるArtisanのヘルプ/のです。
•
handle()メソッドは、コマンドのコードをするです。•
に、あなたのタスクはArtisanをじてコマンドラインでできるようになります。 protected $signature = 'command:name';このクラスのプロパティは、それをするためにするものです。
タスクをにする
Artisanとアプリケーションには、 app / Console / Kernel.phpファイルでタスクをできるようにすることができます。
Kernelクラスには$commandsというのがまれているため、アプリケーションでコマンドをできるようになります。
Artisanとアプリケーションでできるように、このにコマンドをします。
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ Commands\Inspire::class, Commands\MyTaskName::class // This line makes MyTaskName available ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) {
https://riptutorial.com/ja/home 101
} }
これがしたら、Artisanをしてコマンドラインからコマンドにアクセスできるようになりました。コマンドの$signatureプロパティがmy:taskされmy:taskいるとすると、のコマンドをしてタスクをできます。
php artisan my:task
タスクのスケジューリング
アプリケーションでコマンドをできるようになったら、Laravelをして、CRONとじようにあらかじめされたでするようスケジュールできます。
App / Console / Kernel.phpファイルには、タスクをスケジュールするためにできるscheduleがあります。
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ Commands\Inspire::class, Commands\MyTaskName::class ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { $schedule->command('my:task')->everyMinute(); // $schedule->command('my:task')->everyFiveMinutes(); // $schedule->command('my:task')->daily(); // $schedule->command('my:task')->monthly(); // $schedule->command('my:task')->sundays(); } }
あなたのタスクの$signatureがmy:taskとすると、 Schedule $scheduleオブジェクトをしてのように
https://riptutorial.com/ja/home 102
スケジュールすることができます。 Laravelには、にコメントアウトされているように、コマンドをスケジュールするためのさまざまながされています。
するスケジューラの
スケジューラはのコマンドをしてできます。
php artisan schedule:run
スケジューラは、しくするためにするがあります。これをするには、バックグラウンドでスケジューラをするのでcronジョブをします。
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
オンラインでタスクスケジューリングをむ https://riptutorial.com/ja/laravel/topic/4026/タスクスケジューリング
https://riptutorial.com/ja/home 103
35: ディレクトリ
Examples
デフォルトのアプリディレクトリをする
あなたのアプリディレクトリのをのものにしたいというユースケースがあります。 Laravel4では、をするだけで、Laravel5でうことができます。
このでは、 appディレクトリのをsrcします。
オーバーライドアプリケーションクラス
ディレクトリappはコアApplicationクラスにハードコードされているため、オーバーライドするがあります。しいファイルApplication.phpします。はsrcディレクトリたちはappときえるものにのものをしておくがきですが、のにくことができます。
オーバーライドされたクラスのはのとおりです。のがなは、srcをのものにしてください。
namespace App; class Application extends \Illuminate\Foundation\Application { /** * @inheritdoc */ public function path($path = '') { return $this->basePath . DIRECTORY_SEPARATOR . 'src' . ($path ? DIRECTORY_SEPARATOR . $path : $path); } }
ファイルをします。たちはそれでわった。
しいクラスをびす
bootstrap/app.php 、
$app = new Illuminate\Foundation\Application( realpath(__DIR__.'/../') );
たちはこれをこれにきえます
$app = new App\Application( realpath(__DIR__.'/../')
https://riptutorial.com/ja/home 104
);
composer.jsonファイルをき、しいにわせてオートローディングをしてください
"psr-4": { "App\\": "src/" }
に、コマンドラインでcomposer dump-autoloadをすると、 srcディレクトリからアプリケーションがされます。
Controllersディレクトリをする
たちがとするControllersディレクトリをしたいは
なにあるデフォルトのControllersディレクトリをおよび/またはをします。たとえば、 app/Http/Controllersからapp/Controllers
1.
Controllersフォルダのファイルのすべてのネームスペースをし、PSR-4のものをして、しいパスにうようにします。
2.
routes.phpファイルにされているをapp\Providers\RouteServiceProvider.phpをしてし、これをします。
3.
protected $namespace = 'App\Http\Controllers';
これに
protected $namespace = 'App\Controllers';
オンラインでディレクトリをむ https://riptutorial.com/ja/laravel/topic/3153/ディレクトリ
https://riptutorial.com/ja/home 105
36: データベース
Examples
のデータベース
Laravelはのデータベースでのをにします。のデータベースにしてさせるがあるは、にしてください。
にじて、じアプリケーションでなるタイプのデータベースをすることもできます。
デフォルトの config/database.phpでは、のびしをることができます
'default' => env('DB_CONNECTION', 'mysql'),
このはのmysqlします
'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => database_path('database.sqlite'), 'prefix' => '', ], 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], ],
のコードやコマンドでデータベースのをしなかった、Laravelはデフォルトのデータベースをします。ただし、のデータベースでは、デフォルトのをしても、したデータベースのどこにいてもよりいができます。
ファイル
マイグレーションファイルでは、のデータベースのは、をできます。
Schema::create("table",function(Blueprint $table){ $table->increments('id');
https://riptutorial.com/ja/home 106
});
のデータベースでは、 connection()メソッドをして、するデータベースをLaravelにえます。
Schema::connection("sqlite")->create("table",function(Blueprint $table){ $table->increments('id'); });
の
のデータベースをするは、のコマンドをします。
php artisan migrate
ただし、のデータベースの、どのデータベースがデータをしているかをするがよいでしょう。のコマンドをします。
php artisan migrate:install --database=sqlite
このコマンドは、ターゲットデータベースにテーブルをインストールしてをします。
php artisan migrate --database=sqlite
このコマンドは、をし、データをターゲットデータベースにします
php artisan migrate:rollback --database=sqlite
このコマンドは、をロールバックし、データをターゲットデータベースにします
Eloquent Model
Eloquentをしてデータベースをするには、 $connectionプロパティをするがあります。
namespace App\Model\Sqlite; class Table extends Model { protected $table="table"; protected $connection = 'sqlite'; }
Eloquentをしての2のデータベースをするには
namespace App\Model\MySql; class Table extends Model { protected $table="table"; protected $connection = 'mysql'; }
https://riptutorial.com/ja/home 107
Laravelは、 config/database.phpされたされたをするために、モデルでされた$connectionプロパティをしconfig/database.php 。 $connectionプロパティがモデルでされていない、デフォルトがされます。
static onメソッドをしてのをすることもできます。
// Using the sqlite connection Table::on('sqlite')->select(...)->get() // Using the mysql connection Table::on('mysql')->select(...)->get()
データベース/クエリビルダ
クエリビルダをしてのをすることもできます。
// Using the sqlite connection DB::connection('sqlite')->table('table')->select(...)->get() // Using the mysql connection DB::connection('mysql')->table('table')->select(...)->get()
テスト
LaravelはデータベースコードをテストするためにseeInDatabase($table,$fielsArray,$connection)をします。ユニットテストファイルでは、のようにするがあります
$this ->json( 'GET', 'result1/2015-05-08/2015-08-08/a/123' ) ->seeInDatabase("log", ["field"=>"value"], 'sqlite');
このようにして、Laravelはテストするデータベースをします。
テストにおけるデータベーストランザクション
Laravelは、テストにデータベースがすべてのをロールバックできるようにします。のデータベースをテストするには、 $connectionsToTransactプロパティをするがあります
use Illuminate\Foundation\Testing\DatabaseMigrations; class ExampleTest extends TestCase { use DatabaseTransactions; $connectionsToTransact =["mysql","sqlite"] //tell Laravel which database need to rollBack public function testExampleIndex() { $this->visit('/action/parameter') ->see('items'); }
https://riptutorial.com/ja/home 108
}
オンラインでデータベースをむ https://riptutorial.com/ja/laravel/topic/1093/データベース
https://riptutorial.com/ja/home 109
37: データベースシード
Examples
シーダーをかす
しいSeederをDatabaseSeederクラスにすることができます。
/** * Run the database seeds. * * @return void */ public function run() { $this->call(UserTableSeeder::class); }
データベースシーダーをするには、Artisanコマンドをします
php artisan db:seed
これにより、DatabaseSeederクラスがされます。 --class=オプションをして、するシーダーをですることもできます。
* Seederクラスがつからないは、composer dumpautoloadをするがあります。これは、artisanコマンドをするわりにでシーダークラスをするにします。
シードの
データベースシードは、/ database / seedsディレクトリにされます。アーティザンコマンドをしてシードをできます。
php artisan make:seed UserTableSeeder
または、 Illuminate\Database\Seederをするしいクラスをすることもできます。このクラスは、 run()というのパブリックでなければなりません。
シーダーをしたデータの
シーダーでモデルをできます。
use DB; use App\Models\User; class UserTableSeeder extends Illuminate\Database\Seeder{
https://riptutorial.com/ja/home 110
public function run(){ # Remove all existing entrie DB::table('users')->delete() ; User::create([ 'name' => 'Admin', 'email' => '[email protected]', 'password' => Hash::make('password') ]); } }
モデルファクトリでデータをする
でモデルファクトリをしたいがあります。これにより、3のしいユーザーがされます。
use App\Models\User; class UserTableSeeder extends Illuminate\Database\Seeder{ public function run(){ factory(User::class)->times(3)->create(); } }
えば、シードののフィールドをパスワードのようにすることもできます。これにより、じパスワードをつ3のユーザーがされます。
factory(User::class)->times(3)->create(['password' => '123456']);
MySQLダンプでシードする
シードをするのにいます。このでは、MySQL Dumpをしてプロジェクトデータベースにテーブルをシードします。シードするにテーブルをするがあります。
<?php use Illuminate\Database\Seeder; class UserTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $sql = file_get_contents(database_path() . '/seeds/users.sql'); DB::statement($sql); }
https://riptutorial.com/ja/home 111
}
たちの$ sqlはusers.sqlダンプのになるでしょう。ダンプにはINSERT INTOがです。ダンプをするはあなたです。のでは、プロジェクトディレクトリ\database\seedsされてい\database\seeds 。 laravelのヘルパーdatabase_path()をし、ダンプのディレクトリとファイルをします。
INSERT INTO `users` (`id`, `name`, `email`, `password`, `remember_token`, `created_at`, `updated_at`) VALUES (1, 'Jane', '[email protected]', 'superSecret', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00'), (2, 'John', '[email protected]', 'sup3rS3cr3t', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00');
DB::statement($sql)は、Seederがされるとをします。のとに、 UserTableSeederはUserTableSeederによってされたDatabaseSeederクラスにくことができます
<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $this->call(UserTableSeeder::class); } }
プロジェクトディレクトリphp artisan db:seed CLIからします。あるいは、 php artisan db:seed --class=UsersTableSeederをってのクラスにしてphp artisan db:seed --class=UsersTableSeederをすることもできます
fakerおよびModelFactoriesをしてをする
1なな
データベースアプリケーションでは、テストやデモので、システムにあらかじめデータをみむがあります。
このようなデータをするには、まずシーダークラスをします
ProductTableSeeder
use Faker\Factory as Faker; use App\Product; class ProductTableSeeder extends DatabaseSeeder {
https://riptutorial.com/ja/home 112
public function run() { $faker = $this->getFaker(); for ($i = 0; $i < 10; $i++) { $name = $faker->word; $image = $faker->imageUrl; Modelname::create([ 'name' => $name, 'image' => $image, ]); } } }
シーダークラスをできるようにするには、したいシーダーのをすだけで、DatabaseSeederクラスからびすことができます。
Illuminate \ Database \ Seederをします。
class DatabaseSeeder extends Seeder { protected $faker; public function getFaker() { if (empty($this->faker)) { $faker = Faker\Factory::create(); $faker->addProvider(new Faker\Provider\Base($faker)); $faker->addProvider(new Faker\Provider\Lorem($faker)); } return $this->faker = $faker; } public function run() { $this->call(ProductTableSeeder::class); } }
Seederをした、 $ composer dump-autoloadをするのをれないでください。artisanコマンド$ php
artisan make:seeder Nameシーダーをしないり、によってにオートロードされないので、
これで、こののコマンドphp artisan db:seedすることで、をつけるができましたphp artisan db:seed
2モデルをする
まず、 App/database/factories/ModelFactory.phpモデルのデフォルトのセットをします
ユーザーモデルをとしてりげると、ModelFactoryのようにえます
$factory->define(App\User::class, function (Faker\Generator $faker) { return [ 'name' => $faker->name,
https://riptutorial.com/ja/home 113
'email' => $faker->email, 'password' => bcrypt(str_random(10)), 'remember_token' => str_random(10), ]; });
すぐテーブルシーダーをするphp artisan make:seeder UsersTableSeeder
これをします
public function run() { factory(App\User::class, 100)->create() }
これをDatabaseSeederしDatabaseSeeder
public function run() { $this->call(UsersTableSeeder::class); }
これにより、100レコードのテーブルがされます。
オンラインでデータベースシードをむ https://riptutorial.com/ja/laravel/topic/1118/データベースシード
https://riptutorial.com/ja/home 114
38: データベースの
Examples
Laravelでデータベースをするには、をします。とのをする
php artisan make:migration create_first_table --create=first_table
これにより、CreateFirstTableクラスがされます。のメソッドので、をすることができます
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateFirstTable extends Migration { public function up() { Schema::create('first_table', function (Blueprint $table) { $table->increments('id'); $table->string('first_string_column_name'); $table->integer('secont_integer_column_name'); $table->timestamps(); }); } public function down() { Schema::drop('first_table'); } }
すべてのクラスをするには、artisanコマンドをします。
php artisan migrate
これにより、データベースにテーブルとカラムがされます。そののなコマンドはのとおりです。
php artisan migrate:rollback - のデータベースをロールバックする•
php artisan migrate:reset - すべてのデータベースをロールバックする•
php artisan migrate:refresh - すべてのをリセットしてする•
php artisan migrate:status - のステータスをする•
のテーブルの
のrenaming/deletingなど、のテーブルをするがじることがあります。あなたはしいmigration.And
をしてできます。そして、あなたののupメソッドで。
https://riptutorial.com/ja/home 115
//Renaming Column. public function up() { Schema::table('users', function (Blueprint $table) { $table->renameColumn('email', 'username'); }); }
のでは、 users table email columnのをusernameしusername 。のコードでは、 usersテーブルからのusernameをしていusername 。
をするには、プロジェクトのcomposer.jsonファイルにdoctrine/dbalをし、をcomposer updateためにcomposer updateをするがあります。
//Droping Column public function up() { Schema::table('users', function (Blueprint $table) { $table->dropColumn('username'); }); }
ファイル
Laravel 5アプリケーションのdatabase/migrationsは、 database/migrationsディレクトリにあります。ファイルはのにいます。
<year>_<month>_<day>_<hour><minute><second>_<name>.php
1つのファイルは、のをするためのスキーマをすがあります。えば
2016_07_21_134310_add_last_logged_in_to_users_table.php
データベースのは、Laravelがどのでするかをるために、にされます。 Laravelはにいものからしいものへのをします。
ファイルの
しいファイルでしいファイルをすると、スキーマをするがあるたびにがかかります。ありがたいことに、Laravelのartisanコマンドはあなたのためにをすることができます
php artisan make:migration add_last_logged_in_to_users_table
また、のコマンドで--tableと--createフラグをすることもできます。これらはオプションであり、のものであり、するボイラープレートコードをファイルにします。
php artisan make:migration add_last_logged_in_to_users_table --table=users
https://riptutorial.com/ja/home 116
php artisan make:migration create_logs_table --create=logs
--pathオプションをして、されたマイグレーションのカスタムパスをすることができます。パスは、アプリケーションのベースパスからのパスです。
php artisan make:migration --path=app/Modules/User/Migrations
データベース
には、 up()メソッドとdown()メソッドがです。 up()メソッドのは、データベース・スキーマをしいにするためになをすることです。また、 down()メソッドのは、 up()メソッドによってされるをりすことです。データベーススキーマのをロールバックするには、 down()メソッドがをしくさせることがです。
ファイルのは、のようになります。
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class AddLastLoggedInToUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { $table->dateTime('last_logged_in')->nullable(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { $table->dropColumn('last_logged_in'); }); } }
このをすると、LaravelはデータベースにしてするのSQLをします。
ALTER TABLE `users` ADD `last_logged_in` DATETIME NULL
https://riptutorial.com/ja/home 117
の
マイグレーションがされると、マイグレーションがされ、データベースにがされます。
php artisan migrate
すべてうまくいけば、のようながされます。
Migrated: 2016_07_21_134310_add_last_logged_in_to_users_table
Laravelは、プロダクションでのをいつするかをるでです。なをっていることがされたたとえば、テーブルからをするなど、 php artisan migrateコマンドはをめます。なでは、これはましくないかもしれません。そのは、 - --forceフラグをしてをスキップします。
php artisan migrate --force
マイグレーションをしているだけのは、データベースにmigrationsテーブルがするかどうかがわかりにくいがあります。このは、Laravelがどのマイグレーションがすでにされたかをするためにするものです。 migrateコマンドをmigrate 、Laravelはまだされていないをし、それをにして、 migrationsテーブルをします。
がっていることをにしていないり、でmigrationsテーブルをするべきではありません。ってデータベースをれたにしておくと、がすることがあります。
のロールバック
の、つまりのをrollbackするは、すばらしいrollbackコマンドをできます。しかし、このコマンドはのだけをロールバックします。これにはのファイルがまれるがあります
php artisan migrate:rollback
すべてのアプリケーションのをロールバックしたいは、のコマンドをします
php artisan migrate:reset
さらに、のようにで、1つのコマンドでロールバックしてしたいは、このコマンドをできます
php artisan migrate:refresh php artisan migrate:refresh --seed
stepオプションでロールバックするstepをすることもできます。このように1ステップをロールバックします。
php artisan migrate:rollback --step=1
https://riptutorial.com/ja/home 118
オンラインでデータベースのをむ https://riptutorial.com/ja/laravel/topic/1131/データベースの
https://riptutorial.com/ja/home 119
39: テスト
Examples
き
テストなコードをくことは、で、で、なプロジェクトをするでなです。 PHPのもくされているテストフレームワーク、 PHPUnitのサポートはLaravelにみまれています。 PHPUnitはphpunit.xmlファイルをしてされますphpunit.xmlファイルはすべてのしいLaravelアプリケーションのルートディレクトリにあります。
testsディレクトリには、ルートディレクトリにも、アプリケーションのをテストするためのロジックをする々のテストファイルがまれています。もちろん、アプリケーションをビルドするときにとしてこれらのテストをくのはあなたのですが、LaravelにはExampleTest.phpというサンプルファイルがまれています。
<?php use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseTransactions; class ExampleTest extends TestCase { /** * A basic functional test example. * * @return void */ public function testBasicExample() { $this->visit('/') ->see('Laravel 5'); } }
testBasicExample()メソッドでは、サイトのインデックスページにアクセスして、そのページのどこかにLaravel 5というテキストがされていることをします。テキストがしない、テストはし、エラーがされます。
ミドルウェアなしで、しいデータベースでテスト
がテストをするにしいデータベースをさせるには、 use DatabaseMigrations 。また、Authのようなミドルウェアをけたいは、 use WithoutMiddleware 。
<?php use Illuminate\Foundation\Testing\WithoutMiddleware;
https://riptutorial.com/ja/home 120
use Illuminate\Foundation\Testing\DatabaseMigrations; class ExampleTest extends TestCase { use DatabaseMigrations, WithoutMiddleware; /** * A basic functional test example. * * @return void */ public function testExampleIndex() { $this->visit('/protected-page') ->see('All good'); } }
のデータベースのためのデータベーストランザクション
DatabaseTransactionsにより、データベースはテストにすべてのをロールバックできます。のデータベースをロールバックするは、 $connectionsToTransactプロパティをするがあります
use Illuminate\Foundation\Testing\DatabaseMigrations; class ExampleTest extends TestCase { use DatabaseTransactions; $connectionsToTransact =["mysql","sqlite"] //tell Laravel which database need to rollBack public function testExampleIndex() { $this->visit('/action/parameter') ->see('items'); } }
メモリのデータベースをしてセットアップをテストする
セットアップ、テストフレームワークPHPUnitは:memory:データベースをします。
config / database.php
'connections' => [ 'sqlite_testing' => [ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '', ], . . .
https://riptutorial.com/ja/home 121
./phpunit.xml
. . . </filter> <php> <env name="APP_ENV" value="testing"/> <env name="APP_URL" value="http://example.dev"/> <env name="CACHE_DRIVER" value="array"/> <env name="SESSION_DRIVER" value="array"/> <env name="QUEUE_DRIVER" value="sync"/> <env name="DB_CONNECTION" value="sqlite_testing"/> </php> </phpunit>
phpunit.xmlファイルはテストのデフォルトファイルであり、PHPUnitでテストするためににされています。
デフォルトのテストAPP_ENVは、 arrayがキャッシュ・ドライバCACHE_DRIVERであるtestingとしてされていtesting 。このでは、テストにデータセッション/キャッシュはされません。
ホームステッドのようなのにしてテストをするには、デフォルトをのようにします。
<env name="DB_HOST" value="192.168.10.10"/> <env name="DB_DATABASE" value="homestead"/> <env name="DB_USERNAME" value="homestead"/> <env name="DB_PASSWORD" value="secret"/>
または、なメモリデータベースをするには
<env name="DB_CONNECTION" value="sqlite"/> <env name="DB_DATABASE" value=":memory:"/>
に、 Laravelのドキュメントをえておいてください。
テストをするに、 config:clear Artisanコマンドをってキャッシュをconfig:clearてください
オンラインでテストをむ https://riptutorial.com/ja/laravel/topic/1249/テスト
https://riptutorial.com/ja/home 122
40: バレー
き
Valetは、macOSけにされたです。マシン、ホームステッド、またはバラントのをします。 /etc/hostsファイルをにするはありません。ローカルトンネルをしてサイトをすることもできます。
Laravel Valetは、フォルダをドメインにバインドすることにより、 *.devドメインのすべてのサイトをにします。
valetコマンド[オプション] []•
パラメーター
パラメータ
の
コマンド
ドメイン 、fetch-share-url、れる、ヘルプ、インストール、 リンク 、 リンク 、リスト、ログ、on-latest-version、オープン、 パーク 、パス、、セキュア、、、アンインストール、
オプション
-h、--help、-q、--quiet、-V、--version、--ansi、--no-ansi、-n、--no-interaction、-v、-vv、-vvv、 -
オプション
Valet for LinuxとWindowsはなので、それぞれのGithubリポジトリのでのサポートはありません。
Examples
バレーリンク
このコマンドは、ディレクトリではなくディレクトリにのサイトをするにです。
cd ~/Projects/my-blog/ valet link awesome-blog
Valetは~/.valet/Sitesにのディレクトリをすシンボリックリンクをします。 linkコマンドをした、ブラウザのhttp://awesome-blog.devでサイトにアクセスできます。
https://riptutorial.com/ja/home 123
リンクされたすべてのディレクトリのリストをするには、 valet linksコマンドをします 。 valet unlink awesome-blogってvalet unlink awesome-blogをリンクしてシンボリックリンクをすることができvalet unlink awesome-blog 。
バレットパーク
cd ~/Projects valet park
このコマンドは、Valetがサイトをするパスとしてのディレクトリをします。は、 "parked"ディレクトリにしたLaravelプロジェクトは、にhttp://folder-name.devhttp://folder-name.devされます。
バレーリンク
このコマンドは、したみバレーリンクとそれにするファイルパスをコンピュータにします。
コマンド
valet links
サンプル
... site1 -> /path/to/site/one site2 -> /path/to/site/two ...
1このコマンドは、リンクされたフォルダだけでなく、どこからでもできます。
2サイトには.devのがされませんが、 site1.devをしてブラウザからアプリケーションにアクセスします。
インストール
ValetはmacOSにされたツールです。
ValetはローカルマシンのHTTPポートポート80をしているため、 ApacheまたはNginxがじマシンにインストールされてされているはできません。
•
MacOSの」のパッケージマネージャをにバレーをするがあります。•
でbrew updateをして、Homebrewがバージョンにされていることをします。•
インストール
brew install homebrew/php/php71 HomebrewをってPHP 7.1をインストールしてbrew install
homebrew/php/php71 。•
コンポーザーをしてcomposer global require laravel/valetインストールcomposer global •
https://riptutorial.com/ja/home 124
require laravel/valet 。~/.composer/vendor/binディレクトリをシステムの "PATH"に~/.composer/vendor/binしますしない。
•
valet installコマンドをします。•
ポストインストールインストールプロセス、ValetはDnsMasqをインストールしました 。また、システムににするようにValetのデーモンをしたので、マシンをvalet installたびにvalet startまたはvalet installをするはありません。
バレエドメイン
このコマンドをすると、ドメインをローカルマシンにバインドするためにされるTLD トップレベルドメインをまたはできます。
のTLDをする
$ valet domain > dev
TLDをする
$ valet domain local > Your Valet domain has been updated to [local].
インストールLinux
ValetはmacOSにされたツールで、のバージョンはLinux OSにされています。
rootとして、またはsudoコマンドをして、valetをインストールしないでください 。•
ValetはローカルマシンのHTTPポートポート80をしているため、ApacheまたはNginxがじマシンにインストールされてされているはできません。
•
Valetをインストールしてするには、のバージョンのcomposerがです。•
インストール
composer global require cpriego/valet-linuxするバレットをグローバルにインストールするにcomposer global require cpriego/valet-linuxがcomposer global require cpriego/valet-linux 。
•
valet installコマンドをしてvalet installをします。•
ポストインストール
インストールプロセス、ValetはDnsMasqをインストールしました。また、システムににするようにValetのデーモンをしたので、マシンをvalet installたびにvalet startまたはvalet installをするはありません。
https://riptutorial.com/ja/home 125
はここにあります 。
オンラインでバレーをむ https://riptutorial.com/ja/laravel/topic/1906/バレー
https://riptutorial.com/ja/home 126
41: ファイルシステム/クラウドストレージ
Examples
ファイルシステムファイルはconfig/filesystems.php 。このファイルで、すべての "ディスク"をすることができます。ディスクはのストレージドライバとストレージのをします。サポートされているドライバのがファイルにまれています。そのため、ストレージのとをするようにをするだけです
S3またはRackspaceドライバをするに、なパッケージをComposerでインストールするがあります。
Amazon S3 league/flysystem-aws-s3-v2 ~1.0•Rackspace league/flysystem-rackspace ~1.0•
もちろん、なのディスクをし、じドライバをするのディスクをすることもできます。
ローカルドライバをするは、すべてのファイルが、ファイルでされているルートディレクトリからのパスであることにしてください。デフォルトでは、このはstorage/app directoryされていstorage/app directory 。したがって、のではファイルをstorage/app/file.txtにstorage/app/file.txtします。
Storage::disk('local')->put('file.txt', 'Contents');
な
Storageファサードは、みのディスクとのにできます。または、Laravelサービスコンテナをしてされたクラスで、 Illuminate\Contracts\Filesystem\Factoryタイプヒントすることもできます。
のディスクをする
$disk = Storage::disk('s3'); $disk = Storage::disk('local');
ファイルがするかどうかの
$exists = Storage::disk('s3')->exists('file.jpg');
デフォルトディスクのメソッドのびし
if (Storage::exists('file.jpg')) { // }
https://riptutorial.com/ja/home 127
ファイルのをする
$contents = Storage::get('file.jpg');
ファイルのをする
Storage::put('file.jpg', $contents);
ファイルにする
Storage::prepend('file.log', 'Prepended Text');
ファイルにする
Storage::append('file.log', 'Appended Text');
ファイルをする
Storage::delete('file.jpg'); Storage::delete(['file1.jpg', 'file2.jpg']);
ファイルをしいにコピーする
Storage::copy('old/file1.jpg', 'new/file1.jpg');
ファイルをしいにする
Storage::move('old/file1.jpg', 'new/file1.jpg');
ファイルサイズをする
$size = Storage::size('file1.jpg');
をするUNIX
$time = Storage::lastModified('file1.jpg');
ディレクトリのすべてのファイルをする
$files = Storage::files($directory); // Recursive... $files = Storage::allFiles($directory);
ディレクトリのすべてのディレクトリをする
https://riptutorial.com/ja/home 128
$directories = Storage::directories($directory); // Recursive... $directories = Storage::allDirectories($directory);
ディレクトリをする
Storage::makeDirectory($directory);
ディレクトリをする
Storage::deleteDirectory($directory);
カスタムファイルシステム
LaravelのFlysystemインテグレーションは、いくつかの「ドライバー」のためのドライバーをします。ただし、Flysystemはこれらにされず、のくのストレージシステムのアダプタをえています。 Laravelアプリケーションでこれらののアダプタの1つをするは、カスタムドライバをできます。しないで、それほどしいことではありません
カスタムファイルシステムをするには、 DropboxFilesystemServiceProviderなどのサービスプロバイダをするがあります。プロバイダのbootメソッドでは、 Illuminate\Contracts\Filesystem\Factoryインスタンスをし、されたインスタンスのextendメソッドをびすことがextendます。または、 Diskファサードのextendメソッドをすることもできます。
extendメソッドののはドライバので、2のは$appおよび$configをけるClosureです。リゾルバクロージャは、 League\Flysystem\Filesystemインスタンスをさなければなりません。
$ configには、したディスクのconfig/filesystems.phpされているがすでにまれています。 Dropboxの
<?php namespace App\Providers; use Storage; use League\Flysystem\Filesystem; use Dropbox\Client as DropboxClient; use League\Flysystem\Dropbox\DropboxAdapter; use Illuminate\Support\ServiceProvider; class DropboxFilesystemServiceProvider extends ServiceProvider { public function boot() { Storage::extend('dropbox', function($app, $config) { $client = new DropboxClient($config['accessToken'], $config['clientIdentifier']); return new Filesystem(new DropboxAdapter($client)); }); }
https://riptutorial.com/ja/home 129
public function register() { // } }
SSHをしたWebサーバーでのシンボリックリンクの
Laravelのドキュメントでは、ファイルをWebからアクセスにするために、public / storageからstorage / app / publicへのシンボリックリンクシンボリックリンクまたはソフトリンクをするがあります。
このは、ララベルのプロジェクトディレクトリにシンボルのリンクをします
SSHクライアントをしてLinux Webサーバーでシンボリックリンクをするはのとおりです。
SSHクライアントPUTTYをしてWebサーバーにし、ログインします。1.
をしてstorage / app / publicをpublic / storageにリンクする
ln -s target_path link_path
CPanelファイルディレクトリ
ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage
2.
フォルダアイコンのインジケータ>>>とpathをリンクするためにstorageというのフォルダがされます。
オンラインでファイルシステム/クラウドストレージをむ
https://riptutorial.com/ja/laravel/topic/3040/ファイルシステム-クラウドストレージ
https://riptutorial.com/ja/home 130
42: フォームリクエスト
き
カスタムリクエストまたはフォームリクエストは、コントローラメソッドにヒットするにをして
するがあるにです。
2つのないをえてみましょう。それぞれのアクションがなるまたはルールセットをつ、レコードをおよびします。
フォームリクエストをするのはですが、メソッドにリクエストクラスをタイプヒントするがあります。
php artisan makeリクエストname_of_request•
は、コントローラからをするときにです。また、がされているかどうかをすることもできます。
Examples
リクエストの
php artisan make:request StoreUserRequest php artisan make:request UpdateUserRequest
FormRequestsはapp/Http/Requests/フォルダにされているので、 StoreUserやUpdateUser Requestなしなどのをすることもえられます。
フォームリクエストの
ユーザーのをけてみましょうストアメソッドとメソッドをつコントローラがあるかもしれません。 FormRequestsをするには、のをタイプヒントにします。
... public function store(App\Http\Requests\StoreRequest $request, App\User $user) { //by type-hinting the request class, Laravel "runs" StoreRequest //before actual method store is hit //logic that handles storing new user //(both email and password has to be in $fillable property of User model $user->create($request->only(['email', 'password'])); return redirect()->back(); } ...
https://riptutorial.com/ja/home 131
public function update(App\Http\Requests\UpdateRequest $request, App\User $users, $id) { //by type-hinting the request class, Laravel "runs" UpdateRequest //before actual method update is hit //logic that handles updating a user //(both email and password has to be in $fillable property of User model $user = $users->findOrFail($id); $user->update($request->only(['password'])); return redirect()->back(); }
のリダイレクトの
によっては、フォームをしたにユーザーがリダイレクトされるをするためにログインするがあるがあります。フォームリクエストはさまざまなをします。
デフォルトでは、Request $redirect 、 $redirectRoute 、 $redirectActionされた3つのがあります。
これら3つののに、メインのリダイレクトハンドラgetRedirectUrl()オーバーライドすることができます。
のサンプルリクエストがあなたのできることをしています。
<?php namespace App; use Illuminate\Foundation\Http\FormRequest as Request; class SampleRequest extends Request { // Redirect to the given url public $redirect; // Redirect to a given route public $redirectRoute; // Redirect to a given action public $redirectAction; /** * Get the URL to redirect to on a validation error. * * @return string */ protected function getRedirectUrl() { // If no path is given for `url()` it will return a new instance of `Illuminate\Routing\UrlGenerator` // If your form is down the page for example you can redirect to a hash return url()->previous() . '#contact'; //`url()` provides several methods you can chain such as
https://riptutorial.com/ja/home 132
// Get the current URL return url()->current(); // Get the full URL of the current request return url()->full(); // Go back return url()->previous(); // Or just redirect back return redirect()->back(); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return []; } /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } }
オンラインでフォームリクエストをむ https://riptutorial.com/ja/laravel/topic/6329/フォームリクエスト
https://riptutorial.com/ja/home 133
43: ブレードテンプレート
き
Laravelは、ブレードテンプレートエンジンをそのままのでサポートします。ブレードテンプレートエンジンをすると、マスターテンプレートとテンプレートをしてマスターテンプレートからコンテンツをロードすることができます。ブレードファイルに、ループ、およびをめることができます。
Examples
ビューには、MVCパターンで、ユーザーにデータをするにするロジックがまれています。 Webアプリケーションでは、には、それぞれのでユーザーにされるHTMLをするためにされます。デフォルトでは、Laravelのビューはresources/viewsディレクトリにされresources/views 。
ビューはviewヘルパーをしてびすことができます
view(string $path, array $data = [])
ヘルパーののパラメータはビューファイルへのパスで、2のパラメータはビューにすデータのオプションのです。
したがって、 resources/views/example.phpをびすには、をします。
view('example');
resources/views/parts/header/navigation.phpようなresources/viewsディレクトリのサブフォルダのファイルをするには、ドットをしてびすことができます view('parts.header.navigation');
resources/views/example.phpなどのビューファイルでは、HTMLとPHPのをにみむことができます。
<html> <head> <title>Hello world!</title> </head> <body> <h1>Welcome!</h1> <p>Your name is: <?php echo $name; ?></p> </body> </html>
のBladeのはしていませんでは、 $nameをしています。このをビューにすには、ビューヘルパーをびすときにのをします。
https://riptutorial.com/ja/home 134
view('example', ['name' => $name]);
compact()ヘルパーをすることもできます。この、compactにされるは、ビューにすのにします。
view('example', compact('name'));
のの
データをりしてします。あなたはのvariable underscoreをうことができvariableが、 - laravelをするとエラーになります。
このように、エラー user-addressにhyphen ( - )
view('example',['user-address' => 'Some Address']);
これをうしいは
view('example', ['user_address' => 'Some Address']);
Bladeは、なPHPコントロールになをします。
コントロールは@[structure]でまり、 @[endstructure] 。タグでは、のHTMLをするだけで、Blade
でをめることにしてください。
'If'ステートメント
@if ($i > 10) <p>{{ $i }} is large.</p> @elseif ($i == 10) <p>{{ $i }} is ten.</p> @else <p>{{ $i }} is small.</p> @endif
「わないと」
'ないはい。'
@unless ($user->hasName()) <p>A user has no name.</p> @endunless
ループ
https://riptutorial.com/ja/home 135
'While'ループ
@while (true) <p>I'm looping forever.</p> @endwhile
'Foreach'ループ
@foreach ($users as $id => $name) <p>User {{ $name }} has ID {{ $id }}.</p> @endforeach
「Forelse」ループ
'foreach'ループとじですが、されるがのにされるな@emptyディレクティブをして、デフォルトのコンテンツをします。
@forelse($posts as $post) <p>{{ $post }} is the post content.</p> @empty <p>There are no posts.</p> @endforelse
ループでは、ループのにするをむな$loopをできます。
プロパティ
$loop->index のループのインデックス0からまる。
$loop->iteration のループ1から。
$loop->remaining りのループ。
$loop->count されるのアイテムの。
$loop->first これがループをるのであるかどうか。
$loop->last これがループをるのであるかどうか。
$loop->depth のループのネストレベル。
$loop->parent ネストされたループの、のループ。
@foreach ($users as $user) @foreach ($user->posts as $post)
https://riptutorial.com/ja/home 136
@if ($loop->parent->first) This is first iteration of the parent loop. @endif @endforeach @endforeach
Laravel 5.2.22、 @break @continueと@breakというもできます
プロパティ
@continue のをし、のをします。
@break のループをします。
@foreach ($users as $user) @continue ($user->id == 2) <p>{{ $user->id }} {{ $user->name }}</p> @break ($user->id == 4) @endforeach
に 5のユーザーがIDでソートされていて、IDがない 、ページはレンダリングされます
1 Dave 3 John 4 William
PHPをエコーする
{{ $variable }}のPHPは、 eヘルパーのにechoされます 。 だから、をhtmlの< 、 > 、 " 、 ' 、 &にするHTMLエンティティのためにされている。PHPはにされるがあり、そうでないはがスローされます。
をエコーする
{{ $variable }}
のをエコーする
{{ $array["key"] }}
オブジェクトプロパティをエコーする
{{ $object->property }}
https://riptutorial.com/ja/home 137
びしのをエコーする
{{ strtolower($variable) }}
の、PHPでは、がされているかどうかをチェックして、それをします
PHP 7より•
<?php echo isset($variable) ? $variable : 'Default'; ?>
PHP 7の "Null coalescing operator"を•
<?php echo $variable ?? 'Default'; ?>
Bladeオペレータorこれをにする
{{ $variable or 'Default' }}
のエコーしたように、なのは{{ }}のをしてさhtmlspecialchars、セキュリティのためにのHTMLのなをします。 PHPののとしてされるHTMLコンテンツのブロックをするなど、このをするには、のをします。
{!! $myHtmlString !!}
になをき、の{{ }}をしてデータをエスケープするのがベストプラクティスとえられます。また、できないコンテンツサイトのユーザーからされたコンテンツをエコーするは、 {!! !!}です。
なビューをむ
Bladeでは、ビュー「」とばれるをのようにページにめることもできます。
@include('includes.info', ['title' => 'Information Station'])
のコードは 'views / includes / info.blade.php'のビューをみます。また、 'Information Station'をつ$titleをします。
に、インクルードされたページはびしページがアクセスなにアクセスできます。たとえば、のような
https://riptutorial.com/ja/home 138
{{$user}} // Outputs 'abc123' @include('includes.info')
'includes / info.blade.php'にはのものがあります
<p>{{$user}} is the current user.</p>
に、ページがレンダリングされます。
abc123 abc123 is the current user.
それぞれをむ
によっては、 includeステートメントとforeachステートメントをみわせ、 includeのforeachループのにアクセスすることもあります。この、Bladeの@eachディレクティブをして@each
@each('includes.job', $jobs, 'job')
のパラメータは、めるページです。 2のパラメータは、するです。 3のパラメータは、のにりてられたです。のはのものとです
@foreach($jobs as $job) @include('includes.job', ['job' => $job]) @endforeach
@eachディレクティブにオプションの4をして、がのときにするビューをすることもできます。
@each('includes.job', $jobs, 'job', 'includes.jobsEmpty')
レイアウト
レイアウトはビューファイルであり、のビューによってされ、そのブロックにコードブロックをします。えば
parent.blade.php
<html> <head> <style type='text/css'> @yield('styling') </style> </head> <body> <div class='main'> @yield('main-content') </div> </body> </html>
https://riptutorial.com/ja/home 139
child.blade.php
@extends('parent') @section('styling') .main { color: red; } @stop @section('main-content') This is child page! @stop
otherpage.blade.php
@extends('parent') @section('styling') .main { color: blue; } @stop @section('main-content') This is another page! @stop
ここでは、それぞれがをする2つのページのをします。ページは、 @yieldをし@section 。これは、な@yieldステートメントでにされます。
そうでレンダリングされたビューView::make('child') 「 これはページです」とうだろうで、、 View::make('otherpage')テキスト「 これはのあるをき、じHTMLをしますページ "をでします。
ビューファイルをするのはです。たとえば、レイアウトファイルのレイアウトフォルダと、さまざまなの々のビューの々のフォルダがあります。
レイアウトは、々のビューごとにHTMLボイラープレートをすべてきすことなく、サイドバーまたはヘッダーをするなど、すべてのページにするコードをするためのものです。
ビューはりしできます。つまり、 page3は@extend('page2') 、 page2は@extend('page1')です。
extendコマンドは、 View::makeおよび@includeとじをするため、ファイルlayouts/main/page.blade.phpはlayouts/main/page.blade.phpとしてアクセスされlayouts.main.page 。
すべてのビューにデータをする
によっては、くのビューでじデータをするがあります。
View :: shareをする
https://riptutorial.com/ja/home 140
// "View" is the View Facade View::share('shareddata', $data);
この、 $dataのは$shareddataというですべてのビューでになります。
View::shareは、、サービスプロバイダやコントローラのコンストラクタでびされるため、データはそのコントローラからされたビューでのみされます。
View :: composerをするビューコンポーザーは、ビューのレンダリングにびされるコールバックまたはクラスメソッドです。ビューをレンダリングするたびにビューにバインドするデータがある、ビュー・コンポーザーをして、そのロジックをのにすることができます。をのビューまたはすべてのビューにバインドできます。
クロージャベースの
use Illuminate\Support\Facades\View; // ... View::composer('*', function ($view) { $view->with('somedata', $data); });
クラスベースの
use Illuminate\Support\Facades\View; // ... View::composer('*', 'App\Http\ViewComposers\SomeComposer');
View::shareとに、サービスプロバイダにをするのがです。
コンポーザークラスのアプローチをすると、 App/Http/ViewComposers/SomeComposer.phpにのようにApp/Http/ViewComposers/SomeComposer.phpれます。
use Illuminate\Contracts\View\View; class SomeComposer { public function compose(View $view) { $view->with('somedata', $data); } }
https://riptutorial.com/ja/home 141
これらのでは、のに'*'がされています。このパラメータは、コンポーザーをするビュー *はワイルドカードとするです。サブフォルダのにあるルートグループののビュー 'home' をすることもできます 'users.*' 。
のPHPコードをする
をにphpうとすると、ビューでそのようなことをするのはではないかもしれませんが、 php Blade
ディレクティブは、たとえばをするためにPHPコードをするをします
@php($varName = 'Enter content ')
とじ
@php $varName = 'Enter content '; @endphp
{{ $varName }}
コンテンツを
オンラインでブレードテンプレートをむ https://riptutorial.com/ja/laravel/topic/1407/ブレードテンプレート
https://riptutorial.com/ja/home 142
44: ページネーション
Examples
Laravelのページネーション
のフレームワークではページネーションはです。 Laravelはそれをにします。ControllerとViewにコードをしするだけでページネーションをできます。
な
のページをするにはくのがありますが、もなは、クエリビルダまたはEloquentクエリでページネートメソッドをすることです。 Laravelは、ユーザーがしているのページにづいて、とオフセットをします。デフォルトでは、のページは、HTTPリクエストのpage query stringのによってされます。そしてかに、このはLaravelによってにされ、paginatorによってされたリンクにされます。
さて、クエリでpaginateメソッドをびたいとしましょう。このでは、paginateにされるは、「ページごとに」したいのです。たちの、ページあたり10のアイテムをしたいとします。
<?php namespace App\Http\Controllers; use DB; use App\Http\Controllers\Controller; class UserController extends Controller { /** * Show all of the users for the application. * * @return Response */ public function index() { $users = DB::table('users')->paginate(10); return view('user.index', ['users' => $users]); } }
、 groupByステートメントをするページネーションは、Laravelによってにできません。ページされたセットでgroupByをするがあるは、データベースにクエリをい、でページをすることをおめします。
なページネーション
たとえば、のリンクとのリンクをページビューにしたいとします。 LaravelはsimplePaginateメソッドをってこのオプションをします。
https://riptutorial.com/ja/home 143
$users = DB::table('users')->simplePaginate(10);
ビューでのの
これで、ページりをすることができます。にEloquentクエリのpaginateまたはsimplePaginateメソッドをびすと、 paginateのインスタンスがされます。 paginateメソッドがびされると、 Illuminate\Pagination\LengthAwarePaginatorインスタンスがされ、 simplePaginateメソッドをびすと、 Illuminate\Pagination\PaginatorインスタンスがIlluminate\Pagination\Paginatorます。これらのインスタンス/オブジェクトには、セットをするいくつかのメソッドがしています。さらに、これらのヘルパーメソッドにえて、ページネーターインスタンスはイテレーターであり、としてループすることができます。
をけったら、ブレードをしてページリンクをにレンダリングできます
<div class="container"> @foreach ($users as $user) {{ $user->name }} @endforeach </div> {{ $users->links() }}
linksメソッドは、セットののページへのリンクをにレンダリングします。これらのリンクのそれぞれには、のページ、つまり?pageクエリがまれます。 linksメソッドによってされたHTMLは、 Bootstrap CSSフレームワークとにがあります。
ページりビューの
laravelページネーションをしているは、のカスタムビューをにすることができます。したがって、paginatorインスタンスのリンクメソッドをびすときは、ビューをメソッドののとしてします。
{{ $paginator->links('view.name') }}
または
ページビューをカスタマイズするには、vendorpublishコマンドをしてresources/views/vendorディレクトリにエクスポートします。
php artisan vendor:publish --tag=laravel-pagination
このコマンドは、ビューをresources/views/vendor/paginationディレクトリにします。このディレクトリのdefault.blade.phpファイルは、デフォルトのページりビューにしています。このファイルをして、ページネーションのHTMLをします。
オンラインでページネーションをむ https://riptutorial.com/ja/laravel/topic/2359/ページネーション
https://riptutorial.com/ja/home 144
45: ヘルパー
き
Laravelヘルパーは、フレームワークによってされたグローバルにアクセスなです。オブジェクトをインスタンスしたりクラスをインポートしたりすることなく、アプリケーションのどこからでもびすことも、してすることもできます。
、 パス 、 、 URLなどをするためのヘルパーがあります
Examples
メソッド
array_add
このメソッドは、しいキーのペアをにするためにされます。
$array = ['username' => 'testuser']; $array = array_add($array, 'age', 18);
['username' => 'testuser', 'age' => 18]
Stringメソッド
キャメルケース
このメソッドは、をラクダケースにします。
camel_case('hello_world');
HelloWorld
パスmehods
パスメソッドをすると、どこからでもアプリケーションのパスににアクセスできます。
public_path
このメソッドは、アプリケーションのパスをします。これはパブリックディレクトリです。
$path = public_path();
https://riptutorial.com/ja/home 145
URL
url
urlは、されたパスへのURLをします。
あなたのサイトがhello.com
echo url('my/dashboard');
ります
hello.com/my/dashboard
urlメソッドにもされなければ、 Illuminate\Routing\UrlGeneratorインスタンスがされ、このようにできます
のURLをします
echo url()->current();
なURLをします
echo url()->full();
のURLをします
echo url()->previous();
オンラインでヘルパーをむ https://riptutorial.com/ja/laravel/topic/8827/ヘルパー
https://riptutorial.com/ja/home 146
46: ポリシー
Examples
ポリシーの
なアプリケーションでは、 AuthServiceProviderのすべてのロジックをするのがになるがあるため、ロジックを「ポリシー」クラスにすることができます。ポリシーとは、されたリソースにづいてロジックをグループするプレーンなPHPクラスです。
make:policy artisanコマンドをしmake:policyポリシーをすることができます。されたポリシーは、 app/Policiesディレクトリにされます。
php artisan make:policy PostPolicy
オンラインでポリシーをむ https://riptutorial.com/ja/laravel/topic/7344/ポリシー
https://riptutorial.com/ja/home 147
47: ミドルウェア
き
ミドルウェアはクラスであり、1つまたはのルートにりてることができ、サイクルのまたはでアクションをするためにされます。たちは、HTTPリクエストがされているにしなければならないのレイヤーとえることができます
「」ミドルウェアは、コントローラアクションコードのにされます。リクエストがアプリケーションによってされたに「After」ミドルウェアがされる
Examples
ミドルウェアの
しいミドルウェアをするには、ミドルウェアクラスをするがあります。
class AuthenticationMiddleware { //this method will execute when the middleware will be triggered public function handle ( $request, Closure $next ) { if ( ! Auth::user() ) { return redirect('login'); } return $next($request); } }
ミドルウェアをアプリケーションのすべてのルートにバインドするがある、ミドルウェアをapp/Http/Kernel.phpミドルウェアプロパティにするがあります。
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \App\Http\Middleware\AuthenticationMiddleware::class ];
ミドルウェアをいくつかのルートにけるだけのは、 $routeMiddlewareすることができ$routeMiddleware
//register the middleware as a 'route middleware' giving it the name of 'custom_auth' protected $routeMiddleware = [ 'custom_auth' => \App\Http\Middleware\AuthenticationMiddleware::class ];
これをのようにのルートにバインドします。
https://riptutorial.com/ja/home 148
//bind the middleware to the admin_page route, so that it will be executed for that route Route::get('admin_page', 'AdminController@index')->middleware('custom_auth');
とのミドルウェア
「」のミドルウェアのは、のとおりです。
<?php namespace App\Http\Middleware; use Closure; class BeforeMiddleware { public function handle($request, Closure $next) { // Perform action return $next($request); } }
「」のミドルウェアはのようになります。
<?php namespace App\Http\Middleware; use Closure; class AfterMiddleware { public function handle($request, Closure $next) { $response = $next($request); // Perform action return $response; } }
ないは、 $requestパラメータのです。アクションがにしているは$next($request)コントローラのコードのにどうなることがされるびしに$next($request)のコントローラコードがされたにされたアクションにつながります。
ルートミドルウェア
されたミドルウェアrouteMiddlewareでapp/Http/Kernel.phpルートにりてることができます。
ミドルウェアをりてるはいくつかありますが、すべてじです。
https://riptutorial.com/ja/home 149
Route::get('/admin', 'AdminController@index')->middleware('auth', 'admin'); Route::get('admin/profile', ['using' => 'AdminController@index', 'middleware' => 'auth']); Route::get('admin/profile', ['using' => 'AdminController@index', 'middleware' => ['auth', 'admin']);
のすべてのでは、ミドルウェアとしてされていても、クラスをミドルウェアとしてすことができます。
use App\Http\Middleware\CheckAdmin; Route::get('/admin', 'AdminController@index')->middleware(CheckAdmin::class);
オンラインでミドルウェアをむ https://riptutorial.com/ja/laravel/topic/3419/ミドルウェア
https://riptutorial.com/ja/home 150
48: よくあるとすばやい
き
このセクションでは、にがするなとクイックフィックスをします。
Examples
TokenMisMatch
このはにフォームのによってられます。 Laravelは、 CSRFからアプリケーションをし、すべてのをし、がアプリケーションでしたことをします。このはtokenをしてわれtoken 。このトークンがしない、このがされます。
クイックフィックス
フォームにこれをします。これは、 csrf_tokenによってされたcsrf_tokenをのフォームデータとにするため、laravelはリクエストがであることをします
<input type="hidden" name="_token" value="{{ csrf_token() }}">
オンラインでよくあるとすばやいをむ https://riptutorial.com/ja/laravel/topic/9971/よくあるとすばやい
https://riptutorial.com/ja/home 151
49: ラーベールパッケージ
Examples
laravel-ide-helper
このパッケージは、IDEができるファイルをするので、なをできます。はプロジェクトのファイルにづいてわれます。
しくはこちら
laravel-datatables
このパッケージは、Eloquent ORM、Fluent Query BuilderまたはCollectionをして、AJAXオプションをしてDataTables jQuery Pluginのサーバーのをするためにされています。
これについてのをむここやここに
イメージ
Intervention Imageは、オープンソースのPHPおよびライブラリです。これは、を、、するためのよりでかなをし、もな2つのライブラリGD LibraryとImagickをサポートしています。
しくはこちら
ラベラージェネレータ
CRUD、API、テストケース、SwaggerドキュメントをするためのかりやすいAPIとパネルをしています.Laravel Generator
しくはこちら
ラーベルソルジャイト
Laravel SocialiteはFacebook、Twitter、Google、LinkedIn、GitHub、BitbucketでOAuthへのかなインターフェイスをします。それはあなたがこうとしているろしいなコードのほとんどをします。
しくはこちら
パッケージ
レジ
https://riptutorial.com/ja/home 152
Laravel Cashierは、 StripeとBraintreeのサブスクリプションサービスにするかななインターフェースをします。それはあなたがくことをれているのコードのほとんどをします。キャッシャーは、なサブスクリプションにえて、クーポンの、サブスクリプションの、サブスクリプションの「」、キャンセル、さらにはPDFのもです。
このパッケージのはこちらをごください 。
Laravel Envoyは、リモートサーバーでするなタスクをするためのクリーンでのをします。ブレードスタイルのをすると、、のコマンドなどのタスクをにできます。、EnvoyはMacおよびLinuxオペレーティングシステムのみをサポートしています。
このパッケージはGithubにあります。
パスポート
Laravelはのログインフォームでをにできますが、APIはどうですか APIは、ユーザーをするためにトークンをし、でセッションをしません。 LaravelはLaravel PassportをしてAPIをにいます。Laravel PassportはLaravelアプリケーションのなOAuth2サーバーをでします。
このパッケージのはこちらをごください 。
スカウト
Laravel Scoutは、フルテキストをEloquentモデルにするための、シンプルなドライバベースのソリューションをします。モデルオブザーバーをして、ScoutはあなたのEloquentレコードとにインデックスをさせます。
、スカウトにはAlgoliaドライバーがされています。ただし、カスタムドライバのはで、のでScout
をにできます。
このパッケージのはこちらをごください 。
Laravel SocialiteはFacebook、Twitter、Google、LinkedIn、GitHub、BitbucketでOAuthへのかなインターフェイスをします。それはあなたがこうとしているろしいなコードのほとんどをします。
このパッケージはGithubにあります。
オンラインでラーベールパッケージをむ https://riptutorial.com/ja/laravel/topic/8001/ラーベールパッケージ
https://riptutorial.com/ja/home 153
50: ララベルドッカー
き
すべてのとチームがするは、のです。 LaravelはもしているPHPフレームワークの1つです。、DDockerは、のとコードをしてするに、「のマシンでする」をするです。はにでなをりします。どちらもになることをしていますが、をみわせてらしいをりすことができます。
Examples
ララドックをう
Laradockは、Laravelのにわせてされたをえるプロジェクトです。
プロジェクトのルートフォルダにあるLaradockをダウンロードまたはクローンします。
git clone https://github.com/Laradock/laradock.git
ディレクトリをLaradockにし、をするためにな.envファイルをします。
cd laradock cp .env-example .env
これで、ドッカーをするがいました。にコンテナをすると、インターネットからなパッケージがすべてダウンロードされます。
docker-compose up -d nginx mysql redis beanstalkd
http://localhostブラウザをき、プロジェクトをできます。
なLaradockのドキュメントとについては、 ここをクリックしてください 。
オンラインでララベルドッカーをむ https://riptutorial.com/ja/laravel/topic/10034/ララベルドッカー
https://riptutorial.com/ja/home 154
51: リクエスト
Examples
の
をするなは、コントローラにIlluminate\Http\Requestをすることです。その、データにアクセスするはあり、そのうちの4つはのにあります。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { // Returns the username value $name = $request->input('username'); // Returns the username value $name = $request->username; // Returns the username value $name = request('username'); // Returns the username value again $name = request()->username; } }
inputをする、ができないのデフォルトをすることもできます
$name = $request->input('username', 'John Doe');
オンラインでリクエストをむ https://riptutorial.com/ja/laravel/topic/3076/リクエスト
https://riptutorial.com/ja/home 155
52: リクエスト
Examples
HTTPリクエストのインスタンスをする
HTTPリクエストのインスタンスをするには、クラスIlluminate\Http\Requestがコンストラクタまたはコントローラのメソッドのいずれかでヒントになるがあります。
コード
<?php namespace App\Http\Controllers; /* Here how we illuminate the request class in controller */ use Illuminate\Http\Request; use Illuminate\Routing\Controller; class PostController extends Controller { /** * Store a new post. * * @param Request $request * @return Response */ public function store(Request $request) { $name = $request->input('post_title'); /* * so typecasting Request class in our method like above avails the * HTTP GET/POST/PUT etc method params in the controller to use and * manipulate */ } }
コントローラメソッドのルートからのパラメータをしてインスタンスをする
によっては、ルートパラメータをけれるだけでなく、HTTPリクエストパラメータにアクセスするがあります。たちはまだlaravelコントローラにRequestsクラスのヒントをタイプし、でするようにそれをすることができます
えば、たちはこれのようなのをするルートをっていますIDをします
Route::put('post/{id}', 'PostController@update');
https://riptutorial.com/ja/home 156
また、ユーザーがのフォームフィールドをしたので、HTTPリクエストでできるようになります
たちのではにアクセスするです
public function update(Request $request,$id){ //This way we have $id param from route and $request as an HTTP Request object }
オンラインでリクエストをむ https://riptutorial.com/ja/laravel/topic/4929/リクエスト
https://riptutorial.com/ja/home 157
53: ルーティング
Examples
なルーティング
ルーティングは、ののHTTPメソッドとURIののマップとのアクションをします。は、 app/Http/routes.phpファイルにきまれます。
もなでは、RouteファサードでするHTTPメソッドをびし、パラメータとしてURIアプリケーションルートからのパスにするとコールバックをすことで、ルートがされます。
たとえば、ビューのhomeをすサイトのルートURIへのルートはのようになります。
Route::get('/', function() { return view('home'); });
ポストをにエコーするポストリクエストのルート
Route::post('submit', function() { return Input::all(); }); //or Route::post('submit', function(\Illuminate\Http\Request $request) { return $request->all(); });
コントローラメソッドをすルートコールバックをインラインでするわりに、[ControllerClassName @ Method]のコントローラメソッドをできます。
Route::get('login', 'LoginController@index');
ののルートmatchメソッドをして、されたルートのHTTPメソッドのをすることができます。
Route::match(['GET', 'POST'], '/', 'LoginController@index');
https://riptutorial.com/ja/home 158
また、 allをallて、のルートのHTTPメソッドにさせることもできます。
Route::all('login', 'LoginController@index');
ルートグループルートをグループして、コードのりしをけることができます。
のは、のをつすべてのURIとしましょう/adminのミドルウェアとばれるしてadminし、それらはすべてにんでいるApp\Http\Controllers\Adminのネームスペース。
ルートグループをしてこれをするきれいなは、のとおりです。
Route::group([ 'namespace' => 'Admin', 'middleware' => 'admin', 'prefix' => 'admin' ], function () { // something.dev/admin // 'App\Http\Controllers\Admin\IndexController' // Uses admin middleware Route::get('/', ['uses' => 'IndexController@index']); // something.dev/admin/logs // 'App\Http\Controllers\Admin\LogsController' // Uses admin middleware Route::get('/logs', ['uses' => 'LogsController@index']); });
きルート
きルートは、URLをするためにされるか、のルートにリダイレクトされます。きルートをするは、ルートのURIをした、きルートをしているは、URLをしたり、そのルートをすリダイレクトをうがなくなります。しかし、リンクがURLをしてされた[ url('/admin/login') ]をすると、どこでされているかをするがあります。
きルートはasキーasasてされます
Route::get('login', ['as' => 'loginPage', 'uses' => 'LoginController@index']);
またはメソッドnameをする
Route::get('login', 'LoginController@index')->name('loginPage');
きルートをしてURLをする
https://riptutorial.com/ja/home 159
ルートのをしてURLをするには
$url = route('loginPage');
リダイレクトにルートをしている
$redirect = Redirect::route('loginPage');
ルートパラメータ
ルートパラメータをすると、URIセグメントのをできます。ルートをするときにオプションの/のルートパラメータをすることができます。オプションのパラメータには?パラメータのにされます。このは{}まれています
オプションのパラメータRoute::get('profile/{id?}', ['as' => 'viewProfile', 'uses' => 'ProfileController@view']);
このルートは、 domain.com/profile/23 23からアクセスできます。ここで、23はidパラメータです。このでは、 idはProfileController viewメソッドのパラメータとしてされます。これはオプションのパラメータであるため、 domain.com/profileうまくします。
パラメータRoute::get('profile/{id}', ['as' => 'viewProfile', 'uses' => 'ProfileController@view']);
なパラメータのには?がないことにしてください?パラメータのに。
コントローラのパラメータへのアクセスあなたのコントローラでは、viewメソッドはroutes.phpとじのパラメータをとり、ののようにうことができます。 Laravelはをします
public function view($id){ echo $id; }
すべてのルートをキャッチ
すべてのルートをキャッチするは、のようにをできます。
https://riptutorial.com/ja/home 160
Route::any('{catchall}', 'CatchAllController@handle')->where('catchall', '.*');
のルートがあり、キャッチオールがしたくないは、にするがあります。えば
にされているのルートをすべてするRoute::get('login', 'AuthController@login'); Route::get('logout', 'AuthController@logout'); Route::get('home', 'HomeController@home'); // The catch-all will match anything except the previous defined routes. Route::any('{catchall}', 'CatchAllController@handle')->where('catchall', '.*');
ルートはされたでします
これはLaravelのルートによくあるです。ルートは、されているでします。にマッチするルートがされます。
このはりにします
Route::get('/posts/{postId}/comments/{commentId}', 'CommentController@show'); Route::get('/posts/{postId}', 'PostController@show');
/posts/1/comments/1へのgetリクエストは、 CommentController@showをびします。 /posts/1へのgetリクエストは、 PostController@showをびします。
ただし、このはじようにしません。
Route::get('/posts/{postId}', 'PostController@show'); Route::get('/posts/{postId}/comments/{commentId}', 'CommentController@show');
/posts/1/comments/1へのgetリクエストはPostController@showをびします。 /posts/1へのgetリクエストは、 PostController@showをびします。
Laravelはにしたルートをするため、 /posts/1/comments/1へのリクエストはRoute::get('/posts/{postId}', 'PostController@show');$postIdを1/comments/1します。これは、 CommentController@showがびされないことをします。
とをしないルート
Laravelのルートでは、とがされます。それは、
Route::get('login', ...);
/loginへのGETはし/loginが、 /LoginへのGETとはしません。
https://riptutorial.com/ja/home 161
ルートをとをしないようにするには、されたURLとされたルートをするしいバリデータークラスをするがあります。しいバリデータとのバリデータとののいは、コンパイルされたルートののにiをして、とをしないをにすることです。
<?php namespace Some\Namespace; use Illuminate\Http\Request; use Illuminate\Routing\Route; use Illuminate\Routing\Matching\ValidatorInterface; class CaseInsensitiveUriValidator implements ValidatorInterface { public function matches(Route $route, Request $request) { $path = $request->path() == '/' ? '/' : '/'.$request->path(); return preg_match(preg_replace('/$/','i', $route->getCompiled()->getRegex()), rawurldecode($path)); } }
Laravelがしいバリデータをするには、URLとルートをし、のUriValidatorをあなたのものにきえるためにするマッチャーのリストをするがあります。
これをうには、routes.phpファイルのにのをします
<?php use Illuminate\Routing\Route as IlluminateRoute; use Your\Namespace\CaseInsensitiveUriValidator; use Illuminate\Routing\Matching\UriValidator; $validators = IlluminateRoute::getValidators(); $validators[] = new CaseInsensitiveUriValidator; IlluminateRoute::$validators = array_filter($validators, function($validator) { return get_class($validator) != UriValidator::class; });
これにより、のバリデータがされ、バリデータのリストにされます。
オンラインでルーティングをむ https://riptutorial.com/ja/laravel/topic/1284/ルーティング
https://riptutorial.com/ja/home 162
54: ルートモデルバインディング
Examples
のバインド
Laravelは、がルートセグメントとするルートまたはコントローラアクションでされたEloquentモデルをにします。えば
Route::get('api/users/{user}', function (App\User $user) { return $user->email; });
このでは、にされたEloquent $ユーザがURIの{user}セグメントとするため、LaravelはURIからのするとするIDをつモデルインスタンスをにします。するモデルインスタンスがデータベースにつからないは、404 HTTPがにされます。
モデルのテーブルがのからされている、のモデルバインディングをさせるには、はすべてにするがあります。 たとえば、ユーザーがらかのアクションをでき、このアクションにアクセスしたい、ルートはのようになります。
Route::get('api/useractions/{useraction}', function (App\UserAction $useraction) { return $useraction->description; });
なバインディング
なバインディングをするには、ルータのモデルメソッドをして、されたパラメータのクラスをします。なモデルバインディングは、RouteServiceProviderクラスのbootメソッドでするがあります
public function boot() { parent::boot(); Route::model('user', App\User::class); }
に、{user}パラメータをむルートをできます。
$router->get('profile/{user}', function(App\User $user) { });
すべての{user}パラメータをApp\Userモデルにバインドしているので、Userインスタンスがルート
https://riptutorial.com/ja/home 163
にされます。たとえば、 profile/1すると、 IDが1のデータベースからUserインスタンスがされます。
するモデルインスタンスがデータベースにつからないは、 404 HTTPがにされます。
オンラインでルートモデルバインディングをむ https://riptutorial.com/ja/laravel/topic/7098/ルートモデルバインディング
https://riptutorial.com/ja/home 164
55: ルーメンフレームワーク
Examples
ルーメンのい
のは、 WAMP / MAMP / LAMPでLumenをするをしています。
Lumenするには、にカップルをセットアップするがあります。
•PHPUnit•git ではないがくされる•
これら3つのコンポーネントがすべてインストールされているとするとなくともコンポーザーがです、まずをしてWebサーバーのドキュメントルートにします。 MacOSXとLinuxにはらしいがしています。 Windowsではgit bash にはmingw32またはmingw64 をすることができます。
$ cd path/to/your/document/root
に、computeをしてLumenプロジェクトをインストールしてするがあります。のコマンドをします。
$ composer create-project laravel/lumen=~5.2.0 --prefer-dist lumen-project $ cd lumen-project
のコードのlumen-appはフォルダです。あなたはきなようにそれをすることができます。これで、ホストがpath/to/document/root/lumen-project/publicフォルダをすようにするがあります。 http://lumen-project.localをこのフォルダにマップしたとします。あなたがこのURLにくなら、のようなメッセージがされるはずですインストールされているLumenバージョンにじて、のは5.4.4でした -
Lumen (5.4.4) (Laravel Components 5.4.*)
lumen-project/routers/web.phpファイルをそこにくと、
$app->get('/', function () use($app) { return $app->version(); });
おめでとうこれでLumenインストールがLumen 。いいえ、このアプリケーションをしてカスタムエンドポイントをくことはできません。
オンラインでルーメンフレームワークをむ https://riptutorial.com/ja/laravel/topic/9221/ルーメンフレームワーク
https://riptutorial.com/ja/home 165
56: レジLaravel Cashierは、BraintreeとStripeののサブスクリプションサービスにインターフェースをすることにより、サブスクリプションにできます。なサブスクリプションにえて、クーポンの、サブスクリプションの、、キャンセルの、およびPDFのにすることができます。
Examples
ストライプセットアップ
いをするためにStripeをするには、 composer.jsonをし、にcomposer updateするがあります。
"laravel/cashier": "~6.0"
のは、サービスプロバイダのconfig/app.phpするがあります。
Laravel\Cashier\CashierServiceProvider
データボックス
キャッシャーをするには、データベースをするがあります。ユーザーテーブルがしないは、ユーザーテーブルをし、サブスクリプションテーブルをするがあります。のは、のusersをします。 モデルのについては、 Eloquent Modelsをしてください。
キャッシャーをするには、しいをし、をするためにをしてください
// Adjust users table Schema::table('users', function ($table) { $table->string('stripe_id')->nullable(); $table->string('card_brand')->nullable(); $table->string('card_last_four')->nullable(); $table->timestamp('trial_ends_at')->nullable(); }); //Create subscriptions table Schema::create('subscriptions', function ($table) { $table->increments('id'); $table->integer('user_id'); $table->string('name'); $table->string('stripe_id'); $table->string('stripe_plan'); $table->integer('quantity'); $table->timestamp('trial_ends_at')->nullable(); $table->timestamp('ends_at')->nullable(); $table->timestamps(); });
https://riptutorial.com/ja/home 166
その、データベースをphp artisan migrateために、 php artisan migrateをするがあります。
モデルセットアップ
に、 app/User.phpにあるUserモデルになをし、それをのようにするがあります。
use Laravel\Cashier\Billable; class User extends Authenticatable { use Billable; }
ストライプキー
たちがのStripeアカウントにをしておくためには、 config/services.phpファイルにのをするがあります。
'stripe' => [ 'model' => App\User::class, 'secret' => env('STRIPE_SECRET'), ],
STRIPE_SECRETをのストライプできえる。
、キャッシャーとストリップがセットアップされますので、ききサブスクリプションをすることができます。
オンラインでレジをむ https://riptutorial.com/ja/laravel/topic/7474/レジ
https://riptutorial.com/ja/home 167
57:
Examples
まず、constants.phpファイルをしなければなりません。このファイルをapp / config /フォルダーにすることをおめします。また、compose.jsonファイルにconstants.phpファイルをすることもできます。
サンプルファイル
app / config / constants.php
ファイルのベースの
return [ 'CONSTANT' => 'This is my first constant.' ];
そしてあなたはファサードをむことでこのをることができますConfig
use Illuminate\Support\Facades\Config;
に、のようにCONSTANTでをします。
echo Config::get('constants.CONSTANT');
はのようになります。
これはののです。
オンラインでをむ https://riptutorial.com/ja/laravel/topic/9192/
https://riptutorial.com/ja/home 168
58: につリンク
き
このトピックでは、Laravelのスキルをさせるための、またはのにつリンクをつけることができます。
Examples
ララベル
Laravel Scout - Laravel Scoutは、Eloquentモデルにフルテキストをするためのなドライバベースのソリューションをします。
•
Laravel Passport - のないAPI。 PassportはでがうOAuth2サーバーです。•
Homestead - のLaravelです。 VagrantによってされたHomesteadは、のPHP、MySQL、Postgres、Redisなどをして、チームにじページをします。
•
Laravel Cashier - みみのStripeとBraintreeのにより、のをいます。クーポン、サブスクリプションの、キャンセル、そしてPDFさえもすぐにできます。
•
Forge - DigitalOcean、Linode、およびAWSにのPHPアプリケーションをし、します。•
エンヴェイエ - ゼロダウンタイムPHP。•
Valet - Mac miniのためのLaravelな、いいえ、Apacheは、ぎ。•
スパーク - なSaaSアプリケーションの。ボイラープレートとアプリケーションにをてるのをやめてください。
•
ルーメン - なのはAPIとのですが、ルーメンをしてみてください。それはララベルです。•
Statamic - をにし、をせにし、クライアントがあなたをきめるようにされたのCMSです。•
ララキャスト - したスクリーンキャストをして、でなWebをぶ。•
ララベルニュース - ララベルとララベルニュースのをおけします。•
Laravel.io - オープンソースコードのフォーラム•
ポッドキャスト
ララベルニュースポッドキャスト•ララベルポッドキャスト•
オンラインでにつリンクをむ https://riptutorial.com/ja/laravel/topic/9957/につリンク
https://riptutorial.com/ja/home 169
59:
き
Laravelは、のリソースにするユーザーのをするなをします。をすると、のリソースへのアクセスをにし、のリソースへのアクセスをすることができます。 Laravelは、 GatesとPoliciesをしてユーザーをするためのシンプルなAPIをします。 Gatesは、 AuthServiceProviderをしたへのなクロージャベースのアプローチをし、 Policiesはクラスをしてモデルのりにロジックをすることをにします。
Examples
ゲイツの
Gatesは、ユーザーがリソースにしてのアクションをできるかどうかをするクロージャです。 Gatesは、 AuthServiceProviderのブートメソッドでされ、 AuthServiceProviderをするためににがけられます。プレミアムユーザーだけがのコンテンツをできるようにするゲートのは、のようになります。
Gate::define('view-content', function ($user, $content){ return $user->isSubscribedTo($content->id); });
Gateは、にのとしてユーザーインスタンスをけります。ゲートをするときにゲートをすはなく、にじてなモデルなどののをけることもできます。
ゲートによるアクション
のをブレードテンプレートでして、ユーザーからのコンテンツをにするには、のようにします。
@can('view-content', $content) <! -- content here --> @endcan
コンテンツへのナビゲーションをにするには、コントローラでのをできます。
if(Gate::allows('view-content', $content)){ /* user can view the content */ } OR if(Gate::denies('view-content', $content)){ /* user cannot view content */ }
https://riptutorial.com/ja/home 170
これらのメソッドにされているユーザーをすはありませんが、Laravelがそれをします。
ポリシー
ポリシーとは、モデルリソースのにをするのにつクラスです。のをすると、 ContentモデルへのユーザーアクセスをするContentPolicyとします。
ContentPolicyをするために、laravelはのコマンドをします。にする
php artisan make:policy ContentPolicy
のポリシークラスがされ、 app/Policiesフォルダにされます。フォルダがしない、Laravelはフォルダをし、クラスをにします。
したポリシーは、Laravelがモデルのアクションをするにするポリシーをるのをけるためにするがあります。 LaravelのAuthServiceProviderにはしくLaravelがインストールされていますが、あなたのなモデルをポリシーにマップするポリシープロパティがあります。へのマッピングをするだけです。
protected $policies = [ Content::class => ContentPolicy::class, ];
ポリシーの
Policiesをくことは、 Gatesをくこととじパターンにいます。コンテンツゲートは、のようなポリシーとしてきえられます。
function view($user, $content) { return $user->isSubscribedTo($content->id); }
ポリシーには、モデルのすべてのケースをするために、にじてよりくのメソッドをめることができます。
ポリシーによるアクションの
ユーザーモデルをして
Laravel Userモデルには、 Policiesをしたにつ2つのメソッドがあります。 can can't 。これらの2つをして、ユーザーがそれぞれモデルでをっているかどうかをできます。
ユーザーがコンテンツをできるかどうかをするには、のをいます。
if($user->can('view', $content)){ /* user can view content */ }
https://riptutorial.com/ja/home 171
OR if($user->cant('view', $content)){ /* user cannot view content */ }
ミドルウェア
Route::get('/contents/{id}, function(Content $content){ /* user can view content */ })->middleware('can:view,content');
コントローラで
Laravelはとばれるヘルパーメソッド、authorizeとしてポリシーのとするモデルをり、どちらかあなたのロジックにづいてアクションをまたはアクションをし、スローAuthorizationException
Laravelハンドラがに403 HTTP response 。
pubic function show($id) { $content = Content::find($id); $this->authorize('view', $content); /* user can view content */ }
オンラインでをむ https://riptutorial.com/ja/laravel/topic/9360/
https://riptutorial.com/ja/home 172
60:
パラメーター
パラメータ
フィールドはです
々そのフィールドがにするにのみ、そのフィールドにしてチェックをします
Eメール はなメールです
はにするがあります
ユニークdb_table_name
は、されたデータベーステーブルでであるがあります
けれられた はい/オン/ 1 TOSをチェックするのに
active_url checkdnsrrによるとなURLであるがあります
のフィールドは、されたのにをするがあります
アルファ のフィールドはにでなければなりません。
アルファダッシュ のフィールドには、ダッシュ、アンダースコアをできます。
alpha_num のフィールドはにでなければなりません。
アレイ PHP でなければならない
フィールドは、されたののでなければなりません
のmin、max は、minとmaxのにあるがあります
ブールのフィールドはブールとしてキャストできなければなりません。けけたされtrue 、 false 、 1 、 0 、 "1"び"0"
みのフィールドには、するフィールドfoo_confirmationがfoo_confirmation
です。たとえば、のフィールドがpassword、するpassword_confirmationフィールドがにするがあります。
のフィールドは、 strtotime PHPにってなでなければなりません。
のフィールドはでなければなりません
https://riptutorial.com/ja/home 173
パラメータ
のフィールドはでなければなりません。
Examples
な
validateメソッド ValidatesRequestsによってされるベースコントローラーでをして、データをすることができます。
ルールがすると、コードはにされけます。ただし、にすると、エラーをむエラーがにされます。
なHTMLフォームの、ユーザーはフォームをしたをしたで、のページにリダイレクトされます
•
JSONをするの、コード422のHTTPがされます•
たとえば、 UserControllerでは、しいユーザーをstoreメソッドにしているがあります。するにがです。
/** * @param Request $request * @return Response */ public function store(Request $request) { $this->validate($request, [ 'name' => 'required', 'email' => 'email|unique:users|max:255' ], // second array of validation messages can be passed here [ 'name.required' => 'Please provide a valid name!', 'email.required' => 'Please provide a valid email!', ]); // The validation passed }
のでは、 nameフィールドがでないですることをします。に、 emailフィールドになメールがあり、データベーステーブルの "users"でで、が255であることをします。
| パイプは、1つのフィールドにしてなるをみわせています。
によっては、のにしたでにするルールのをすることもできます。これをうには、 bailルールをにりてます。
$this->validate($request, [ 'name' => 'bail|required', 'email' => 'email|unique:users|max:255' ]);
https://riptutorial.com/ja/home 174
なルールのなリストは、 のパラメータセクションにあります 。
アレイバリデーション
フォームのフィールドのはにです。
されたの、メール、およびのをするがあるとします。あなたはをうことができます
$validator = \Validator::make($request->all(), [ 'name.*' => 'required', 'email.*' => 'email|unique:users', 'fatherName.*' => 'required' ]); if ($validator->fails()) { return back()->withInput()->withErrors($validator->errors()); }
Laravelはのためのデフォルトのメッセージをします。ただし、ベースのフィールドのカスタムメッセージがなは、のコードをできます。
[ 'name.*' => [ 'required' => 'Name field is required', ], 'email.*' => [ 'unique' => 'Unique Email is required', ], 'fatherName.*' => [ 'required' => 'Father Name required', ] ]
なコードはのようになります
$validator = \Validator::make($request->all(), [ 'name.*' => 'required', 'email.*' => 'email|unique:users', 'fatherName.*' => 'required', ], [ 'name.*' => 'Name Required', 'email.*' => 'Unique Email is required', 'fatherName.*' => 'Father Name required', ]); if ($validator->fails()) { return back()->withInput()->withErrors($validator->errors()); }
そののアプローチ
1フォームリクエストの
https://riptutorial.com/ja/home 175
アプリケーションののにして、ロジック、ルール、およびエラーメッセージをできる「フォーム」をすることができます。
make:request Artisan CLIコマンドは、クラスをし、 app/Http/Requestsディレクトリにします。
php artisan make:request StoreBlogPostRequest
authorizeメソッドは、このリクエストのロジックでオーバーライドできます。
public function authorize() { return $this->user()->can('post'); }
rulesメソッドは、このリクエストののルールでオーバーライドできます。
public function rules() { return [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; }
messagesメソッドは、このののメッセージをにすることができます。
public function messages() { return [ 'title.required' => 'A title is required', 'title.unique' => 'There is another post with the same title', 'title.max' => 'The title may not exceed :max characters', 'body.required' => 'A message is required', ]; }
リクエストをするには、するコントローラメソッドにのリクエストクラスをタイプヒントしてください。にすると、エラーがされます。
public function store(StoreBlogPostRequest $request) { // validation passed }
2でバリデータをする
をめるために、ツールをでし、したをすることができます。
<?php namespace App\Http\Controllers;
https://riptutorial.com/ja/home 176
use Validator; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class PostController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); if ($validator->fails()) { return redirect('post/create') ->withErrors($validator) ->withInput(); } // Store the blog post... } }
2にルールをする
によっては、サービスプロバイダのboot()メソッドをしてのルールをするがあるがあります.Laravel 5.4ではRuleクラスをしてしいルールをできます。
として、ユーザーをまたはするのために、 UserRequestをしてします。のところ、がで、メールアドレスはでなければなりません。 uniqueルールをするのは、ユーザーをしているときにじメールをするがあるため、のユーザーをルールからするがあるということです。のは、しいRuleクラスをしてにこれをうをしています。
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Http\Request; use Illuminate\Validation\Rule; class UserRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules(Request $request)
https://riptutorial.com/ja/home 177
{ $id = $request->route()->getParameter('user'); return [ 'name' => 'required', // Notice the value is an array and not a string like usual 'email' => [ 'required', Rule::unique('users')->ignore($id) ] ]; } }
POST、PUT、PATCHのフォームクラス
'Form Request Validation'のにえば、じリクエストクラスをPOST 、 PUT 、 PATCHできるので、じ/のバリデーションをしてのクラスをするはありません。これは、テーブルにのがあるにです。
/** * Get the validation rules that apply to the request. * * @return array */ public function rules() { switch($this->method()) { case 'GET': case 'DELETE': return []; case 'POST': return [ 'name' => 'required|max:75|unique', 'category' => 'required', 'price' => 'required|between:0,1000', ]; case 'PUT': case 'PATCH': return [ 'name' => 'required|max:75|unique:product,name,' . $this->product, 'category' => 'required', 'price' => 'required|between:0,1000', ]; default:break; } }
からに、switchはリクエストのメソッドタイプ GET 、 DELETE 、 POST 、 PUT 、 PATCH をべます。
メソッドにじて、されたルールのをします。のnameフィールドのようにのフィールドがある、するののIDをするがあります。
'field_name' => 'unique:table_name,column_name,' . $idToIgnore`
idのラベルがけられたキーがあるは、キーを4のパラメータとしてします。
https://riptutorial.com/ja/home 178
'field_name' => 'unique:table_name,column_name,' . $idToIgnore . ',primary_key_column'
このでは、 PUTをして、プロダクトIDのをルート admin/products/{product} にしています。したがって、 $this->productはするidとしくなります。
PUT|PATCHとPOSTはじであるはありません。にったロジックをします。このでは、カスタムフォームクラスでしたカスタムメッセージをすることができます。
エラーメッセージ
エラーメッセージのカスタマイズ
/resources/lang/[lang]/validation.phpファイルには、バリデーターがするエラーメッセージがまれています。にじてすることができます。
それらのほとんどには、エラーメッセージをするときににきえられるプレースホルダがあります。
たとえば、 'required' => 'The :attribute field is required.' :attributeプレースホルダはフィールドにきえられますまたは、じファイルのattributesのフィールドのをカスタマイズすることもできます。
メッセージ
'required' => 'Please inform your :attribute.', //... 'attributes => [ 'email' => 'E-Mail address' ]
ルール
`email' => `required`
としてじるエラーメッセージ
"あなたのEメールアドレスをおらせください。"
Requestクラスのエラーメッセージのカスタマイズ
Requestクラスはをすべきmessages()メソッドにアクセスできます。これはlangファイルにることなくメッセージをオーバーライドするためにできます。たとえば、カスタムのfile_existsがある、のようなメッセージをできます。
class SampleRequest extends Request {
https://riptutorial.com/ja/home 179
/** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'image' => 'required|file_exists' ]; } /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } public function messages() { return [ 'image.file_exists' => 'That file no longer exists or is invalid' ]; } }
エラーメッセージの
エラーはセッションにフラッシュされ、 $errorsでもできます。これはにすべてのビューにされます。
ブレードビューでエラーをする
@if (count($errors) > 0) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
カスタムルール
カスタムルールをするは、Validatorファサードをして、サービスプロバイダのbootメソッドなどでカスタムルールをできます。
https://riptutorial.com/ja/home 180
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Validator; class AppServiceProvider extends ServiceProvider { public function boot() { Validator::extend('starts_with', function($attribute, $value, $parameters, $validator) { return \Illuminate\Support\Str::startsWith($value, $parameters[0]); }); Validator::replacer('starts_with', function($message, $attribute, $rule, $parameters) { return str_replace(':needle', $parameters[0], $message); }); } }
extendメソッドは、ルールのとなると、の、される、ルールパラメータの、およびバリデータインスタンスをすをります。はになります。このでは、のがされたでまるかどうかをしています。
このカスタムルールのエラーメッセージは、/resources/lang/[lang]/validation.phpファイルででき、パラメータなどのプレースホルダをめることができます。
'starts_with' => 'The :attribute must start with :needle.'
replacerメソッドは、ルールのであると、ののメッセージ、の、ルールの、およびルールパラメータのをにすをります。にじてプレースホルダをきえたにメッセージをすがあります。
このルールをのルールとじようにします。
$this->validate($request, [ 'phone_number' => 'required|starts_with:+' ]);
オンラインでをむ https://riptutorial.com/ja/laravel/topic/1310/
https://riptutorial.com/ja/home 181
61:
Examples
インストール
composer require laravel/socialite
このインストールでは、 ComposerをってLaravelでをしていることをとしています。これはです。
あなたのconfig\services.phpにのコードをすることができます
'facebook' => [ 'client_id' => 'your-facebook-app-id', 'client_secret' => 'your-facebook-app-secret', 'redirect' => 'http://your-callback-url', ],
config\app.phpもプロバイダをするがあります
'providers' => []をし、にのものをします
'providers' => [ ... Laravel\Socialite\SocialiteServiceProvider::class, ]
ファサードは、パッケージとともにされています。そのいをしたいのなら、 aliasesあなたのconfig\app.php にのコードがあることをしてください
'aliases' => [ .... 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ]
な - ファサード
return Socialite::driver('facebook')->redirect();
これにより、がされるなURLにリダイレクトされます。なはコントローラにあります
<?php namespace App\Http\Controllers\Auth;
https://riptutorial.com/ja/home 182
use Socialite; class AuthenticationController extends Controller { /** * Redirects the User to the Facebook page to get authorization. * * @return Response */ public function facebook() { return Socialite::driver('facebook')->redirect(); } }
app\Http\routes.phpファイルに、ここでをするルートがあることをしてください。
Route::get('facebook', 'App\Http\Controllers\Auth\AuthenticationController@facebook');
な -
/** * LoginController constructor. * @param Socialite $socialite */ public function __construct(Socialite $socialite) { $this->socialite = $socialite; }
コントローラのコンストラクタで、ソーシャルネットワークでのログインにつSocialiteクラスをできるようになりました。これはファサードのをきえます。
/** * Redirects the User to the Facebook page to get authorization. * * @return Response */ public function facebook() { return $this->socialite->driver('facebook')->redirect(); }
APIのソーシャルサイト - ステートレス
public function facebook() { return $this->socialite->driver('facebook')->stateless()->redirect()->getTargetUrl(); }
これにより、FacebookのをるためにAPIのコンシューマーがエンドユーザーにするがあるURLがされます。
オンラインでをむ https://riptutorial.com/ja/laravel/topic/1312/
https://riptutorial.com/ja/home 183
62:
php artisan [コマンド] [オプション] []•
パラメーター
コマンド
クリアコンパイルされた
コンパイルされたクラスファイルをする
ダウン アプリケーションをモードにする
env のフレームワークをする
けて コマンドのヘルプをします。
リスト リストコマンド
する データベースのをする
する よりいパフォーマンスのためにフレームワークをする
する PHPサーバーでアプリケーションをする
れ アプリケーションとのインタラクション
アップ アプリケーションをメンテナンスモードからする
アプリ アプリケーションのをする
authクリアリセット れのパスワードリセットトークンをフラッシュする
キャッシュクリア アプリケーションキャッシュをフラッシュする
キャッシュテーブル キャッシュデータベーステーブルのをする
configキャッシュ よりいみみのためのキャッシュファイルをする
configclear キャッシュファイルをする
dbシード データベースにレコードをシードする
イベントする にづいてしているイベントとリスナーをする
キーする アプリケーションキーをする
https://riptutorial.com/ja/home 184
コマンド
makeauth のなログインとのビューとルート
makeconsole しいアーティザンコマンドをする
makeコントローラ しいコントローラクラスをする
makeイベント しいイベントクラスをする
make しいジョブクラスをする
makeリスナー しいイベントリスナクラスをする
makeミドルウェア しいミドルウェアクラスをする
makeマイグレーション しいファイルをする
makeモデル しいEloquentモデルクラスをする
makeポリシー しいポリシークラスをする
makeprovider しいサービスプロバイダクラスをする
makeリクエスト しいフォームクラスをする
makeシーダー しいシーダークラスをする
makeテスト しいテストクラスをする
migrateinstall リポジトリの
リフレッシュ すべてのをリセットしてする
リセット すべてのデータベースをロールバックする
ロールバック のデータベースをロールバックする
ステータス のステータスをする
キューしました すべてのしたキュージョブをする
キューしたテーブル したキュージョブデータベーステーブルのをする
キューフラッシュする すべてのしたキュージョブをフラッシュする
キューれる したキュージョブをする
キューく のちをく
https://riptutorial.com/ja/home 185
コマンド
キュー のジョブのでキューワーカーデーモンをする
キュー したキュージョブをする
キューテーブル キュージョブデータベーステーブルのをする
キュー キューののジョブをする
ルートキャッシュ ルートをするためのルートキャッシュファイルの
ルートクリア ルートキャッシュファイルをする
ルートリスト すべてのみルートをする
スケジュール スケジュールされたコマンドをする
セッションテーブル セッションデータベーステーブルのをする
ベンダーベンダーパッケージからパブリッシュなアセットをパブリッシュする
ビュークリア すべてのコンパイルみビューファイルをする
Examples
き
Artisanは、bashコマンドをしてのりしタスクをするのにつユーティリティです。データベースでのそれはめて、くのタスク、カバーおよび 、 キャッシュをクリアし 、 のセットアップになファイルをし、しいコントローラ、モデル、イベントクラス 、およびよりくをうことを 。
Artisanは、Laravelにまれているコマンドラインインターフェイスのです。アプリケーションをするにつくのコマンドがされています。
なすべてのArtisanコマンドのリストをするには、listコマンドをします。
php artisan list
なコマンドのをるには、そののにhelpキーワードをつけてください
php artisan help [command-name]
のでフィルタリングされたすべてのみルートをする
https://riptutorial.com/ja/home 186
php artisan route:list --method=GET --method=POST
これには、 GETメソッドとPOSTメソッドをにけれるすべてのルートがまれます。
PHPコードをしてLaravel Artisanコマンドをする
ルートまたはコントローラからLaravel Artisanコマンドをすることもできます。
PHPコードをしてコマンドをするには
Artisan::call('command-name');
えば、
Artisan::call('db:seed');
しいコマンドのと
あなたはからしいコマンドをすることができます
php artisan make:command [commandName]
これにより、 app/Console/Commandsディレクトリに[commandName]コマンドクラスがされます。
このクラスのには、 protected $signatureとprotected $descriptionがあります。これは、あなたのコマンドをするためにされるあなたのコマンドのとディスクリプションをします。
コマンドをした、 commandsプロパティをつけるapp/Console/Kernel.phpクラスにコマンドをすることができcommands 。
のような$コマンドのにコマンドをすることができます
protected $commands = [ Commands\[commandName]::class ];
コンソールからのコマンドをすることができます。
として、のようなをけました。
protected $signature = 'test:command';
だからはいつでもります
php artisan test:command
test:commandをつクラスのでhandleメソッドをびします。
https://riptutorial.com/ja/home 187
オンラインでをむ https://riptutorial.com/ja/laravel/topic/1140/
https://riptutorial.com/ja/home 188
63:
Examples
オブザーバーをする
オブザーバーは、Laravelののモデルのライブサイクルコールバックをくためにされます。 これらのリスナーは、のいずれかのをくことができます。
•した•する•しました•
•された•する•された•する•された•
オブザーバーのです。
UserObserver
<?php namespace App\Observers; /** * Observes the Users model */ class UserObserver { /** * Function will be triggerd when a user is updated * * @param Users $model */ public function updated($model) { // execute your own code } }
ユーザーオブザーバーにされているように、されたアクションをきますが、このクラスがにユーザーモデルをリッスンするに、にEventServiceProviderにするがあります。
EventServiceProvider
https://riptutorial.com/ja/home 189
<?php namespace App\Providers; use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use App\Models\Users; use App\Observers\UserObserver; /** * Event service provider class */ class EventServiceProvider extends ServiceProvider { /** * Boot function * * @param DispatcherContract $events */ public function boot(DispatcherContract $events) { parent::boot($events); // In this case we have a User model that we want to observe // We tell Laravel that the observer for the user model is the UserObserver Users::observe(new UserObserver()); } }
オブザーバをしたので、されたはユーザモデルをしたにびされます。
オンラインでをむ https://riptutorial.com/ja/laravel/topic/7128/
https://riptutorial.com/ja/home 190
64:
Examples
マルチ
Laravelでは、のガードにのタイプをできます。
laravel 5.3ではのがLaravel 5.2としなります
は5.3でmultiauthenticationをするをします
まず、2つのなるユーザーモデルがです
cp App/User.php App/Admin.php
クラスをAdminにし、なるモデルをするはをします。それはのようになります
App \ Admin.php
<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class Admin extends Authenticatable { use Notifiable; protected $fillable = ['name', 'email', 'password']; protected $hidden = ['password', 'remember_token']; }
また、のをするがあります
php artisan make:migration create_admins_table
デフォルトのユーザーのをむファイルをします。このようにえる
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateAdminsTable extends Migration {
https://riptutorial.com/ja/home 191
/** * Run the migrations. * * @return void */ public function up() { Schema::create('admins', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); $table->softDeletes(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('admins'); } }
edit config / auth.php
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], //Add Admin Guard 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ],
そして
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], //Add Admins Provider 'admins' => [ 'driver' => 'eloquent',
https://riptutorial.com/ja/home 192
'model' => App\Admin::class, ], ],
2つのエントリをすることにしてください。 1つはガードのの1つはプロバイダーです。
そして、これはあなたがのガードをして "web"
のApp \ Http \ Controllers \ Admin \ LoginController
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Support\Facades\Auth; class AuthController extends Controller { use AuthenticatesUsers; protected $guard = 'admin'; protected $redirectTo = '/admin/'; public function showLoginForm() { return view('admin.login'); } protected function guard() { return Auth::guard($this->guard); } }
これはほとんどがありません。
Auth :: guard 'admin'はガードにログイン、ログアウト、などをできるようにします。
えば
Auth::guard('admin')->login($user)
adminsテーブルの$ userをし、そのにユーザーとログインします
Auth::login($user)
usersテーブルでにします。デフォルトガードはconfig / auth.phpでdefaultsでされています。なララベルでは、それは "ウェブ"です。
https://riptutorial.com/ja/home 193
コントローラでは、カスタムビューパスをするためにAuthenticatesUsersからメソッドをするがあります。そして、あなたのしいユーザーガードをするためにガードのようなのをするがあります。
このでは、ログインはadmin / login.bladeです
そして、 Auth :: guard 'admin'をすためのguardをすることによって、すべてのAuthenticatesUsers traitメソッドが "admin"ガードでします。
のバージョンのlaravelでは、5.3とほとんどいがありません
5.2のgetGuardはクラスとmainログインから$ guardをします。
Auth::guard($guard)->attempt(...)
5.3ガードは、Auth :: guardをし、mainはそれをきなようにいます
$this->guard()->attempt(...)
オンラインでをむ https://riptutorial.com/ja/laravel/topic/7051/
https://riptutorial.com/ja/home 194
65:
Examples
な
メールのは、アプリケーションの.ENVファイルにのをメールプロバイダのログインとともに/するだけでできます。たとえば、gmailでするなどです。
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 [email protected] MAIL_PASSWORD=yourPassword MAIL_ENCRYPTION=tls
に、Mailをしてメールをすることができます。
$variable = 'Hello world!'; // A variable which can be use inside email blade template. Mail::send('your.blade.file', ['variable' => $variable], function ($message) { $message->from('[email protected]'); $message->sender('[email protected]'); $message->to([email protected]); $message->subject('Hello World'); });
オンラインでをむ https://riptutorial.com/ja/laravel/topic/8014/
https://riptutorial.com/ja/home 195
クレジット
S. No
Contributors
1 Laravelをいめる
alepeino, Alphonsus, boroboris, Colin Herzog, Community, Ed Rands, Evgeniy Maynagashev, Gaurav, Imam Assidiqqi, James, Ketan Akbari, Kovah, Lance Pioch, Marek Skiba, Martin Bean, Misa Lazovic, nyedidikeke, Oliver Adria, Prakash, rap-2-h, Ru Chern Chong, SeinopSys, Tatranskymedved, Tim
2AJAXのトークンのエラー
Pankaj Makwana
3 Cronの A. Raza
4 Eloquent
aimme, alepeino, Alessandro Bassi, Alex Harris, Alfa, Alphonsus, andretzermias, andrewtweber, Andrey Lutskevich, aynber, Buckwheat, Casper Spruit, Dancia, Dipesh Poudel, Ian, Imam Assidiqqi, James, James, jedrzej.kurylo, John Slegers, Josh Rumbut, Kaspars, Ketan Akbari, KuKeC, littleswany, Lykegenes, Maantje, Mahmood, Marco Aurélio Deleu, marcus.ramsden, Marek Skiba, Martin Bean, matiaslauriti, MM2, Nicklas Kevin Frank, Niklas Modess, Nyan Lynn Htut, patricus, Pete Houston, Phroggyy, Prisoner Raju, RamenChef, rap-2-h, Rubens Mariuzzo, Sagar Naliyapara, Samsquanch, Sergio Guillen Mantilla, Tim, tkausl, whoan, Yasin Patel
5
Eloquent Relationshipのマクロ
Alex Casajuana, Vikash
6Eloquentアクセッサミューテータ
Diego Souza, Kyslik
7 Eloquentモデル
Aeolingamenfel, alepeino, Alex Harris, Imam Assidiqqi, John Slegers, Kaspars, littleswany, Marco Aurélio Deleu, marcus.ramsden, Marek Skiba, matiaslauriti, Nicklas Kevin Frank, Samsquanch, Tim
8 EloquentAdvaith, aimme, Alex Harris, Alphonsus, bhill77, Imam Assidiqqi, Ketan Akbari, Phroggyy, rap-2-h, Ru Chern Chong, Zulfiqar Tariq
9Eloquentのフィールドエイリアスをする
MM2
https://riptutorial.com/ja/home 196
10HTMLとフォームビルダ
alepeino, Casper Spruit, Himanshu Raval, Prakash
11Laravel 5.2.31 +のデフォルトのルーティングをする
Frank Provost
12Laravel 5.4とのSparkpostの
Alvin Chettiar
13 laravel-5.2のA. Raza, ashish bansal, Community, Edward Palen, Ivanka Todorova, Shubhamoy
14 laravel-5.3の Ian
15 laravel-5.3をいめるA. Raza, Advaith, Community, davejal, Deathstorm, Manish, Matthew Beckman, Robin Dirksen, Shital Jachak
16LaravelにおけるのDB
4444, A. Raza, Rana Ghosh
17LaravelのCustomExceptionクラス
ashish bansal
18laravelのURLからパブリックをする
A. Raza, Rana Ghosh, ultrasamad
19
LinuxサーバのホスティングにLaravel 5アプリケーションをする
Donkarnash, Gayan, Imam Assidiqqi, Kyslik, PassionInfinite, Pete Houston, rap-2-h, Ru Chern Chong, Stojan Kukrika, ultrasamad
20WindowsでLaravelをしてアップロードするときのファイルの
Donkarnash, RamenChef
21 イベントとリスナー Bharat Geleda, matiaslauriti, Nauman Zafar
22 インストール
A. Raza, alepeino, Alphonsus, Black, boroboris, Gaurav, Imam Assidiqqi, James, Ketan Akbari, Lance Pioch, Marek Skiba, Martin Bean, nyedidikeke, PaladiN, Prakash, rap-2-h, Ru Chern Chong, Sagar Naliyapara, SeinopSys, Tim
23 インストールガイドAdvaith, Amarnasan, aynber, Community, davejal, Dov Benyomin Sohacheski, Imam Assidiqqi, PaladiN, rap-2-h, Ru Chern Chong
https://riptutorial.com/ja/home 197
24 エラー Isma, Kyslik, RamenChef, Rubens Mariuzzo
25 カスタムヘルパー Ian, Luceos, rap-2-h, Raunak Gupta
26 キュー Alessandro Bassi, Kyslik
27クロスドメインリクエスト
Imam Assidiqqi, Suraj
28 コレクション
A. Raza, Alessandro Bassi, Alex Harris, bhill77, caoglish, Dummy Code, Gras Double, Ian, Imam Assidiqqi, Josh Rumbut, Karim Geiger, matiaslauriti, Nicklas Kevin Frank, Ozzy, rap-2-h, simonhamp, Vucko
29 コントローラ Ru Chern Chong
30 サービス A. Raza, El_Matella
31 シードA. Raza, Alphonsus, Ian, Imam Assidiqqi, Kyslik, SupFrost, whoan
32ストレージのアクセス
A. Raza
33タスクスケジューリング
Jonathon
34 ディレクトリ Kaspars, Moppo, RamenChef
35 データベースA. Raza, adam, caoglish, Ian, Iftikhar uddin, Imam Assidiqqi, liamja, Panagiotis Koursaris, RamenChef, Rubens Mariuzzo, Sanzeeb Aryal, Vucko
36 データベースシードAchraf Khouadja, Andrew Nolan, Dan Johnson, Isma, Kyslik, Marco Aurélio Deleu
37 データベースのChris, Chris White, Hovsep, hschin, Iftikhar uddin, Imam Assidiqqi, Kaspars, liamja, littleswany, mnoronha, Nauman Zafar, Panagiotis Koursaris, Paulo Freitas, Vucko
38 テストAlessandro Bassi, Brayniverse, caoglish, Julian Minde, Kyslik, rap-2-h, Sven
39 バレーDavid Lartey, Dov Benyomin Sohacheski, Imam Assidiqqi, Misa Lazovic, Ru Chern Chong, Shog9
40ファイルシステム/クラウドストレージ
Imam Assidiqqi, Nitish Kumar, Paulo Laxamana
https://riptutorial.com/ja/home 198
41 フォームリクエスト Bookeater, Ian, John Roca, Kyslik, RamenChef
42ブレードテンプレート
A. Raza, agleis, Akshay Khale, alepeino, Alessandro Bassi, Benubird, cbaconnier, Christophvh, Imam Assidiqqi, matiaslauriti, Nauman Zafar, rap-2-h, Safoor Safdar, Tosho Trajanov, yogesh
43 ページネーション Himanshu Raval, Iftikhar uddin
44 ヘルパー aimme
45 ポリシー Tosho Trajanov
46 ミドルウェア Alex Harris, Kaspars, Kyslik, Moppo, Pistachio
47 よくあるとすばやい Nauman Zafar
48ラーベールパッケージ
Casper Spruit, Imam Assidiqqi, Ketan Akbari, rap-2-h, Ru Chern Chong, Tosho Trajanov
49 ララベルドッカー Dov Benyomin Sohacheski
50 リクエスト Ian, Jerodev, RamenChef, Rubens Mariuzzo
51 ルーティングA. Raza, alepeino, Alessandro Bassi, Alex Juchem, beznez, Dwight, Ilker Mutlu, Imam Assidiqqi, jedrzej.kurylo, Kyslik, Milan Maharjan, Rubens Mariuzzo, SeinopSys, Vucko
52ルートモデルバインディング
A. Raza, GiuServ, Vikash
53ルーメンフレームワーク
maksbd19
54 レジ littleswany, RamenChef
55 Mubashar Iqbal, Oscar David, Zakaria Acharki
56 につリンク Jakub Kratina
57 Daniel Verem
58
A. Raza, alepeino, Alessandro Bassi, Alex Harris, Andrew Nolan, happyhardik, Himanshu Raval, Ian, Iftikhar uddin, John Slegers, Marco Aurélio Deleu, matiaslauriti, rap-2-h, Rubens Mariuzzo, Safoor Safdar, Sagar Naliyapara, Stephen Leppik, sun, Vucko
59 Jonathon, Marco Aurélio Deleu
https://riptutorial.com/ja/home 199
60Alessandro Bassi, Gaurav, Harshal Limaye, Himanshu Raval, Imam Assidiqqi, Kaspars, Laurel, Rubens Mariuzzo, Safoor Safdar, Sagar Naliyapara, SeinopSys
61 matiaslauriti, Szenis
62 Aykut CAN, Imam Assidiqqi
63 Yohanan Baruchel
https://riptutorial.com/ja/home 200