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


関連記事

laravel logo

Laravelの基礎知識

1 はじめに2 Laravelの概要2.1 学習コストが低い2.2 Symfonyがベース2.3 DIを積極的に活用している3 ディレクトリ構成3.1 app3.2 bootstrap3.3 conf ...

rails

Ruby2.4でCookieを手動で復号する際に発生したエラーの対処

1 はじめに1.1 前提条件2 発生したエラー2.1 実際のコード2.2 エラー詳細2.3 原因3 どう対処したか3.1 修正後のコード はじめに こんにちは、onoです。 現在開発中のアプリケーショ ...

rails

Shrineを使って画像をアップロードする

1 はじめに2 Shrineとは2.1 簡単な説明2.2 作者2.3 特徴3 下準備3.1 Gemを追加3.2 初期設定3.3 テーブルを作成する4 実装4.1 Uploaderの実装4.2 Mode ...

aws

ALB+EC2な環境でhttpをhttpsにリダイレクトする

1 はじめに1.1 前提条件2 ALBの設定3 Nginxの設定3.1 注意点4 さいごに はじめに httpsに対応済みのWebサイトの場合、httpでアクセスされた時にhttpsでリダイレクトする ...

FastAPIのPath Operationをasync defにするときはブロッキングに気をつけよう!

1 はじめに2 Path Operationと並行処理3 挙動の確認4 対応方法4.1 asyncioを使って自力で非同期化する4.2 async対応済みのパッケージを使う4.3 async defを ...

フォロー

blog-page_side_responsive

2019年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

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