副業におすすめなサイトを見る→

Laravelでデータの取得・登録・更新・削除処理する方法を解説

アプリリリースのお知らせ

予定を探すアプリyoteipickerをリリースしました。

アプリの利用用途:暇だから何か予定入れたいけど今週の土日は何しようかな〜?ってときに使えるアプリです。

Laravelでデータの取得・登録・更新・削除処理を実装するにはどうすればいいんだろう…

こんな疑問を解決します。

データの取得や登録、更新、削除はアプリ作成には欠かせません。

この記事では基本的な取得・登録・更新・削除処理について解説します。

また削除処理では物理削除・論理削除の2種類のやり方を書いているので、

ぜひ最後まで読んでいただき、参考にしてくださいね!

>>ココナラと似てるおすすめの副業サイトを確認する

>>リモートワークもあるおすすめの転職サイトを確認する

休日で空いた時間の暇つぶしを探せるアプリを公開しています。

Contents

動作環境や前提

Docker 20.10.7
PHP 7.4.22
Laravel 8.53.1
mySQL 5.7
データベースのツール phpmyadmin

この記事ではモデルにデータベースのロジックを書いていくので、以下の記事を事前にチェックしておくとスムーズです。

また、companiesテーブルを使ってデータをの確認し、以下のような構造です。

Laravelでデータを取得する

一覧表示や詳細表示などで、データベースからテーブルのレコードを全て取得したり、特定の値に絞ってデータを取得することはざらにあります。

まずはその方法を解説しますね。

テーブルのレコードを全件取得

    /**
     * レコードを全件取得
     */
    public function findAllCompany()
    {
        return $this->all();
    }

company_id = 1のデータを取得

    /**
     * companiesテーブルからcompany_id = 1のレコード1件取得
     */
    public function findByCompanyId()
    {
        return $this
            ->where('company_id', 1)
            ->get();
    }

category_code = 1, company_nameが株式会社テストのデータを取得

    /**
     * category_code = 1, company_nameが株式会社テストを取得
     */
    public function findByCategoryCodeAndCompanyName()
    {
        return $this
            ->where([
                ['category_code', 1],
                ['company_name', '株式会社テスト']
            ])
            ->get();
    }

特定の日付の期間をデータを取得

    /**
     * 特定の日付の期間を取得
     */
    public function findCompanyByBetweenDate()
    {
        return $this
            ->whereBetween('created_at',['2021-10-15 00:00:00', '2021-10-16 23:59:59'])
            ->get();
    }

Laravelでデータを登録する

データを登録するなら、createメソッドを使います。

    /**
     * companiesテーブルにデータを登録する
     * 
     * @param string $companyName = $request->company_name; 会社名
     * @param string $password = $request->password; パスワード
     */
    public function insertCompany($companyName, $password)
    {
        return $this->create([
            'company_name' => $companyName,
            'password'     => Hash::make($password),
        ]);
    }

Laravelでデータを更新する

データを更新する場合は、fillとsaveメソッドを使います。

    /**
     * companiesテーブルのデータを更新する
     * 
     * $request フォームで入力された値
     * $company = Company::find($id);
     */
    public function updateCompany($request, $company)
    {
        $result = $company->fill([
            'company_name' => $request->company_name,
            'password'     => Hash::make($request->password)
        ])->save();

        return $result;
    }

Laravelでデータを削除する

データを削除する場合は、destroyメソッドを使います。

    /**
     * 削除処理
     * 
     * $companyId = $company->company_id;
     */
    public function deleteCompanyById($companyId)
    {
        return $this->destroy($companyId);
    }

上記の場合は、データベースからもデータを完全に削除します。

これは物理削除といいます!

データベースにはデータを残しておきたいけど、画面上では削除されたことにしたいなぁ….

こんな場面もあるかと。

論理削除というのですが、その場合は、方針の一つとして以下が考えられます。

  1. companiesテーブルに削除されたことを示すカラムを用意
  2. destroyメソッドを使わず、カラムを更新する
  3. 値を取得

このような流れになります。

例えば、companiesテーブルに削除フラグとして私はcompany_delete_flgを用意しました。

company_delete_flgはデフォルトではNULLを取り、削除処理が実行されると値を1に更新します。

会社一覧でデータを取得する際は、company_delete_flgがNULLのものだけ取得すればOKです。

    /**
     * 論理削除
     * 
     * 削除が実行されたら、company_delete_flgを1に更新する
     * $id = companiesテーブルのcompany_id(主キー)
     * $company = Company::find($id);
     */
    public function logicalDeleteByCompanyId($company)
    {
        $result = $company->fill([
            'company_delete_flg' => 1
        ])->save();

        return $result;
    }

compnay_delete_flgがNULLのもの(論理削除されていない)を全て取得

    /**
     * company_delete_flgがNULLのものだけ取得
     */
    public function findAllCompany()
    {
        return $this
            ->where('company_delete_flg', NULL)
            ->get();
    }

こんな感じで完全に削除する場合と論理削除する場合があります。ただ、論理削除の場合は、データベース上にはデータは残ったままなので容量は大きくなってしまうのが欠点ですね。

【まとめ】Laravelでデータの取得・登録・更新・削除

今回は、Laravelでデータを取得・登録・更新・削除について解説しました。

削除については、物理削除と論理削除のやり方も解説したので、用途に合わせて実装してみてくださいね!

このブログでは、他にも実務で役立つLaravelの記事を書いているので、興味のある方はぜひ合わせてチェックしてください。

>>ココナラと似てるおすすめの副業サイトを確認する

>>リモートワークもあるおすすめの転職サイトを確認する

休日で空いた時間の暇つぶしを探せるアプリを公開しています。

スキルを売り買いするならココナラ

コメント

コメントする

CAPTCHA


Contents
閉じる