Laravelでよく使う便利な関数orライブラリー
Laravelでよく使う便利な関数orライブラリーを紹介していきます。
パスワードのハッシュ化
Controller
use Illuminate\Support\Facades\Hash;
$mymy->password = Hash::make($request->password);
//下記のようにランダムにハッシュ化される
//$2y$10$c0XnxIoqscqkkO4vxvdyxeXF6aLSxZOKR.Ye4fWhBlhiHulhxg1Ju
Carbon ライブラリー
Laravelに標準で搭載されているライブラリーでcreated_atやupdated_atはCarbonインスタンスとして取得されます。
Carbonをcreated_atを組み合わせると
2023-02-13 16:08:00
↓
22時間前
と変更することが可能です!
記述方法
<p>{{$my->created_at->diffForHumans()}}</p>
->diffForHumans()と付けるだけで変更できます。
詳しくCorbonを知りたい方は
https://coinbaby8.com/carbon-laravel.html
Deleteソフトデリート
論理削除(ソフトデリート)->復元できる(ごみ箱のようなもの)
物理削除(デリート)->復元できない(永久削除)
マイグレーション側upメゾット 記述
database/migrations/
$table->softDeletes();
モデル側 記述
app/Models/
use Illuminate\Database\Eloquent\SoftDeletes;
モデル内のクラス記述
use SoftDeletes;
コントローラー側 記述
Model::findOrFail($id);//IDごとに指定してソフトデリート
Model::all();//ソフトデリートしたものは表示されない
Model::onlyTrashed()->get();ごみ箱のみ表示
Model:withTrashed()->get();ごみ箱も含めてすべて表示
Model::onlyTrashed()->whereId($id)->restore();//IDを指定して復元
Model::onlyTrashed()->restore();//すべて復元
Model::onlyTrashed()->whereId($id)->forceDelete();//IDを指定して完全削除
Model:onlyTrashed()->forceDelete();//ごみ箱すべて完全削除
$model=Model::all():
$model->trached();//ソフトデリートされているかの確認
Delete アラート表示
ついでにjsでのアラートの方法も記述します。
view側記述
<form method="post"action="">
button type="submit" onclick="deletePost(this)><削除>
</form>
javascript
<script>
function deletePost(e) {
'use strict';
if (confirm('本当に削除してもいいですか?')) {
document.getElementById('delete_' + e.dataset.id).submit();
}
}
</script>
フラッシュメッセージとは
フラッシュメッセージとは、そのリクエストの間だけ表示される一時的なメッセージのことです。
例えば、以下の動画のようにエラーメッセージを表示したり、処理が完了したことをお知らせするときなどに使われます。
まず手順として
resources/view/components/の中でflash-message.blade.phpを作成(名前は何でも大丈夫です)
//flash-message.blade.php
@props(['status' => 'info'])
@php
//session('status')の中身によって色を変える処理
if (session('status') =='info') {
$bgColor = 'bg-blue-300';
}
if (session('status') == 'alert') {
$bgColor = 'bg-red-500';
}
if(session('status')==='fukugen') {
$bgColor = 'bg-green-500';
}
if(session('status')==='sakujyo'){
$bgColor = 'bg-red-600';
}
@endphp
//session('message')があれば上の色とmessageを入れる
@if (session('message'))
<div class="{{ $bgColor }} w1/2 mx-auto p-2 text-white">
{{ session('message') }}
</div>
@endif
//Controllers
return redirect()->route(リダイレクトさせたい場所)->
with(['message'=>'削除しました','status'=>'alert']);
with関数で連想配列でフラッシュメッセージで表示させたい内容と
flash-message.blade.phpのif文で指定した色によって値を入力)
view(controllerで指定したリダイレクト先 又はフラッシュメッセージを表示させたい場所)
<x-flash-message status="session('status')" />
これだけの記述OK
componentなので色んな所で使いまわすことが出来てとても便利です。