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「超」入門 (確かな力が身につく「超」入門シリーズ)

page_footer_300rect




page_footer_300rect




-BackEnd
-,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

laravel logo

Laravelのバッチ処理を作る

1 はじめに2 環境3 artisanコマンド作成4 artisanコマンドをバッチとして登録する5 さいごに6 おすすめ書籍 はじめに こんにちは。webアプリにつきもののバッチ処理ですが、もちろん ...

rails

Shrineでアップロードする際に画像を加工する

1 はじめに2 アップロードする画像のリサイズ2.1 Gemを追加2.2 Uploaderの修正3 サムネイルを作成する3.1 Uploaderの修正3.2 サムネイルを表示する4 バリデーションの追 ...

laravel logo

LaravelでHTTP通信

1 はじめに2 インストール3 基本的な使い方3.1 GETでリクエストを投げる3.2 リクエストヘッダーを指定3.3 クエリパラメータを指定3.4 timeout時間を指定3.5 POSTでリクエス ...

rails

Rails Developer Meetup に参加してきました【1日目】

1 はじめに2 発表について2.1 安全かつ高速に進めるマイクロサービス化2.2 Rails in Microservices2.3 MySQL/InnoDB の裏側2.4 H2O/mruby でつく ...

laravel logo

Laravelでメールを送る

1 はじめに1.1 準備2 実装2.1 Mailableクラスの作成2.2 テンプレートの作成2.3 Mailableクラスの修正2.4 コントローラの作成2.5 コンフィグの修正3 さいごに4 おす ...

フォロー

follow us in feedly

page_side_300rect

2019年3月
« 2月 4月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31 

アプリ情報

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