LaravelでQueueとJobを使ってみる基礎基礎メモ
キューを利用することで、一部の処理を非同期で実行することができます。 以下はユーザー登録する場合にキューを利用した場合のイメージです。
キューを利用することで、メール送信を待たずに、完了画面を表示することができます。
続きを読むLaravelでMailHogを使うメモ
LaravelでMailHogを利用してメール送信する為のメモです。
環境構築には、Laradocを利用しています。
LaravelのQueueサービスを試してみたくて、メールの送信を調べたのであまり参考にならないと思います。
続きを読むEloquentでJson形式でデータを受け取るメモ
Eloquentで、toJson
メソッドを利用することで、モデルのデータをjson形式に変換して受け取ることができます。
<! --more-->
class HelloController extends Controller
{
public function index(Request $request)
{
return Person::get()->toJson();
}
}
普通にPerson::get()
で受け取ると、Collectionのインスタンスが返却されますが、 toJson
を利用すると、結果は以下のようになります。
[ {"id":1,"name":"Taro","mail":"hoge@example.com","age":15,"created_at":"2019-12-14 05:49:05","updated_at":"2019-12-14 05:49:05"}, {"id":2,"name":"Jiro","mail":"fuga@example.com","age":20,"created_at":"2019-12-14 05:49:05","updated_at":"2019-12-14 05:49:05"} ]
Laravelでrouteの便利な指定の仕方のメモ
routeの便利な指定の仕方のメモです。
middlewareをまとめて割り当てる
middleware設定割り当てる場合以下のようにしますが、ルートグループを利用することで、まとめて割り当てることができます。
普通の書き方
Route::get('/Hoge', 'HogeController@index')->middleware(HogeMiddleware::class); Route::get('/Hoge/other', 'HogeController@show')->middleware(HogeMiddleware::class);
まとめて割り当てる
Route::middleware([HogeMiddleware::class])->group(function () {
Route::get('/Hoge', 'HogeController@index');
Route::get('/Hoge/other', 'HogeController@show');
});
名前空間をまとめて割り当てる
特定の用途に利用しているControllerなどをディレクトリ単位でまとめた場合に、groupでルート設定を行うと便利。
例えば動物関連のコントローラーをまとめたAnimal
ディレクトリがあるとします。
普通の書き方
Route::get('/animal', 'Animal\AnimalController@index'); Route::get('/animal/dog', 'Animal\DogController@show');
まとめて割り当てる
Route::namespace('Animal')->group(function () {
Route::get('/animal', 'AnimalController@index');
Route::get('/animal/other', 'DogController@show');
});
ディレクトリが深い場合は便利なきがします。
ルートパラメーターとモデルのインスタンスを結合する
ルートにidを連携することで、該当するモデルのインスタンスを簡単に取得することができます。
usersテーブルからrouteで連携したidのモデルインスタンスを取得してみます。
普通に書くと(素人なので普通じゃなかったらすみません)
◎ /routes/web.php
Route::get('/hoge/{user}','HogeController@index');
◎ app/Http/Controllers/HogeController.php
public function index($id) { $data = [ 'msg' => User::where('id',$id)->first(), ]; return view('hoge.index', $data); }
◎/routes/web.php
Route::get('/hoge/{user}','HogeController@index');
◎ app/Http/Controllers/HogeController.php
<?php namespace App\Http\Controllers; use App\Person; use Illuminate\Http\Request; class HogeController extends Controller { public function index(User $user) { $data = [ 'msg' => $user, ]; return view('hoge.index', $data); } }
どちらも、http://localhost/hoge/2
でアクセスすると、以下のようなデータが取得できます。
{"id":2,"name":"fuga","mail":"fuga@example.com","age":20}