0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel 便利な関数 ライブラリー

Last updated at Posted at 2023-02-14

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なので色んな所で使いまわすことが出来てとても便利です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?