BackEnd

LaravelでのDB操作の基礎

投稿日:

はじめに

今回の記事では、PHPのフレームワークであるLaravelでのDB操作に関する基礎知識を紹介します。Laravelの基礎知識に関してはこちらをご覧ください。

Eloquent

EloquentはLaravelの標準のORMです。DB上のデータの検索、作成、更新はもちろん、リレーション、論理削除なども簡単に扱うことができます。

それでは、実際にEloquentの使い方を見ていきましょう。

モデルの定義

モデルは artisan make:model コマンドで作成することができます。Bookモデルの作成は以下のようになります。

上記のコマンドを実行すると、 app ディレクトリの直下に Book.php が作成されます。

また、まだマイグレーションファイルを作成していなければ、モデルの作成時にマイグレーションファイルを一緒に作成することができます。マイグレーションに関しては次に説明します。

通常、モデルは app 直下に作成されますが、オートロードするように指定してある場所ならどこに作成してもよいです。例えば、 app/Models 直下に作成したい場合は以下のようにします。

モデルの取得

DBからレコードを1件取得するには find メソッドを使用します。以下のように使用します。

複数のレコードを取得するには all メソッドを使用します。以下のように使用します。

whereなど、条件をつけてレコードを取得したい場合は where メソッドを使用します。以下のように使用します。

whereRaw メソッドを使用すると任意のSQLを実行することができます。以下のように使用します。

モデルの追加

レコードを1件追加するには2種類の方法があります。1つ目はインスタンスを生成してから save メソッドを使用する方法です。以下のように使用します。

2つ目は create メソッドを使用する方法です。この方法では事前にモデルに fillable プロパティで変更を許可するパラメータを列挙しておく必要があります。以下のように指定します。

以下のように使用します。

複数のレコードを一度に追加するには insert メソッドを使用します。注意点としては、insert では先程説明した fillable がきかないので、意図しない値が入る場合があります。以下のように使用します。

モデルの更新

レコードの更新には2種類の方法があります。1つ目はインスタンスを取得してから save メソッドを使用する方法です。以下のように使用します。

2つ目は update メソッドを使用する方法です。この方法では create メソッドと同様に fillable プロパティで変更を許可するパラメータを列挙しておく必要があります。以下のように使用します。

モデルの削除

レコードの削除には destroy メソッドを使用します。以下のように使用します。

クエリスコープ

クエリスコープを定義することで、検索条件を使い回す事ができます。以下のように定義します。

以下のように使用します。

マイグレーション

マイグレーションファイルを作成し、実行することでデータベースを定義します。

それでは、実際にbooksテーブルを定義してみましょう。

マイグレーションファイルの作成

マイグレーションファイルの作成は artisan make:migration コマンドで行います。

上記のコードを実行すると database/migrations ディレクトリの直下に CreateBooksTable.php が作成されます。

作成直後のマイグレーションファイルは、カラムが1つも定義されていないので、 title カラムと price カラムを追加します。以下のようになります。

up メソッドには追加したい定義を記述します。逆に down メソッドには元に戻すための処理を記述します。

マイグレーションの実行

マイグレーションは artisan migrate コマンドで行います。以下のようになります。

上記のコマンドを実行すると、まだ実行されていないすべてのマイグレーションファイルの up メソッドが実行されます。

ロールバック

追加したマイグレーションの定義を戻したい場合には artisan migrate:rollback コマンドを実行します。以下のようになります。

上記のコマンドを実行すると、直前に実行したマイグレーションファイルの down メソッドが実行されます。

初期状態に戻す

これまでに実行したマイグレーションをすべてもとに戻したい場合は artisan migrate:reset コマンドを実行します。以下のようになります。

さいごに

LaravelでのDB操作の基礎として、Eloquentの使い方とマイグレーションのやりかたを紹介しました。

おすすめ書籍

初めてのPHP PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 動かして学ぶ!Vue.js開発入門 (NEXT ONE) 確かな力が身につくJavaScript「超」入門 (確かな力が身につく「超」入門シリーズ)

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Go言語

Go 1.19でGoDocに追加された機能

1 はじめに2 GoDocの機能追加2.1 セクションタイトル(Headings)2.2 リンク2.3 リスト2.4 パッケージの追加3 おまけ4 さいごに5 おすすめ書籍 はじめに 8月2日にGo ...

rails

Railsでの非同期処理とDelayed Job

1 はじめに2 Active Job2.1 Active Jobの役割2.2 ジョブを作成する2.3 ジョブをキューに登録する2.4 コールバック2.5 例外3 Delayed Job3.1 設定3. ...

rails

Shrineをモデルに関連付けないで使用してハマったこと

1 はじめに2 アップロード時にリサイズする3 アップロード時のバリデーション4 アップロード時に古いファイルを削除する5 さいごに はじめに ShrineはRailsでのアップロードを簡単に行えるよ ...

Go言語

sqlcを使ってSQLファイルからGoのコードを生成する

1 はじめに2 sqlcとは2.1 コード解析2.2 サポートする言語とデータベース3 sqlcでコードを生成する3.1 準備3.2 DDLを書く3.3 クエリを書く3.4 コードを生成する3.5 生 ...

MySQLでバルクアップデート処理

1 はじめに2 使用するテーブル3 パターン数が少ないシンプルな更新4 パターン数が多い場合4.1 FIELD関数4.2 ELT関数4.3 組み合わせ4.4 パフォーマンス5 さいごに6 おすすめ書籍 ...

フォロー

blog-page_side_responsive

2019年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。