Laravelでデータの取得・登録・更新・削除処理を実装するにはどうすればいいんだろう…
こんな疑問を解決します。
データの取得や登録、更新、削除はアプリ作成には欠かせません。
この記事では基本的な取得・登録・更新・削除処理について解説します。
また削除処理では物理削除・論理削除の2種類のやり方を書いているので、
ぜひ最後まで読んでいただき、参考にしてくださいね!
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
動作環境や前提
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);
}
上記の場合は、データベースからもデータを完全に削除します。
これは物理削除といいます!
データベースにはデータを残しておきたいけど、画面上では削除されたことにしたいなぁ….
こんな場面もあるかと。
論理削除というのですが、その場合は、方針の一つとして以下が考えられます。
- companiesテーブルに削除されたことを示すカラムを用意
- destroyメソッドを使わず、カラムを更新する
- 値を取得
このような流れになります。
例えば、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の記事を書いているので、興味のある方はぜひ合わせてチェックしてください。
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
コメント