目次
モデルクラスにアクセサーと修飾子を作成する
ミューテーターメソッド
アクセサーメソッド
ミューテーターの役割
アクセサ稼働中
今日は、Laravel の Eloquent ORM の修飾子とアクセサーの概念を検討しました。これは、データをデータベースに保存したりデータベースから抽出したりする前に、データを変更するための優れた方法を提供します。
ホームページ バックエンド開発 PHPチュートリアル Laravel のエレガントなアクセサーとモディファイアー

Laravel のエレガントなアクセサーとモディファイアー

Aug 29, 2023 pm 10:53 PM
laravel エレガントなアクセサー 修飾子

Laravel のエレガントなアクセサーとモディファイアー

この記事では、Laravel Web フレームワークの Eloquent ORM の修飾子とアクセサーを紹介します。導入後、いくつかの例を通してこれらの概念を理解します。

Laravel では、修飾子とアクセサーを使用して、データベースにデータを保存したり、データベースからデータを取得したりする前にデータを変更できます。具体的には、ミューテーターを使用すると、データベースに保存する前にデータを変更できます。一方、アクセサーを使用すると、データベースからデータを取得した後にデータを変更できます。

実際、Laravel モデルは、修飾子メソッドとアクセサー メソッドを作成できる中心的な場所です。もちろん、すべての変更をさまざまな場所に分散させるのではなく、1 か所にまとめておくのは便利です。

モデルクラスにアクセサーと修飾子を作成する

修飾子とアクセサーの基本的な概念は理解できたので、それを示す実践的な例の開発に進みます。

Laravel の Eloquent モデルを理解していることを前提としています。例の開始点として Post モデルを使用します。 Post モデルをまだ作成していない場合は、artisan コマンドを使用して作成しましょう。

リーリー

これにより、以下に示すように、app/Post.php にモデル ファイルが作成されます。

リーリー

このファイルの内容を次のように置き換えてみましょう。

リーリー

--migration オプションを使用したため、関連するデータベースの移行も作成されるはずです。わからない場合に備えて、次のコマンドを実行すると、実際にデータベースにテーブルが作成されます。

リーリー

この記事の例を実行するには、post テーブルに name 列を作成する必要があります。いずれにしても、移行の詳細については、この記事の範囲を超えるため説明しません。

ミューテーターメソッド

まず、ミューテーター メソッドを見てみましょう。

リーリー

前に説明したように、修飾子はデータベースに保存する前にデータを変更するために使用されます。ご覧のとおり、ミューテーター メソッドの構文は {属性名} です。もちろん、{attribute-name} をキャメルケースの実際の属性名に置き換える必要があります。すべてのアクセサー メソッドと修飾子メソッドは、属性にアクセスして変更する方法を定義する Attribute インスタンスを返すことに注意することが重要です。

プロパティでミューテーター メソッドを呼び出すときは、set パラメーターが使用されます。わかりやすくするために、データベースに保存する前に投稿タイトルを小文字に変換する strto lower 関数を使用しました。

この方法で、テーブルのすべての列に突然変異メソッドを作成できます。次に、アクセサー メソッドを見てみましょう。

アクセサーメソッド

データベースに保存する前に変数を使用してデータを変更する場合、データベースからデータを取得した後にアクセサー メソッドを使用してデータを変更します。アクセサー メソッドを定義するには、プロパティの定義時に get パラメーターを指定する必要があります。

アクセサー メソッドを見てみましょう。

リーリー

データベースから name 属性の値を取得した後、get パラメーターが呼び出されます。この例では、ucfirst メソッドを使用して投稿タイトルを変更しました。

ここまではアサイナー メソッドとアクセサー メソッドを作成しただけですが、次のセクションでそれらをテストします。

ミューテーターの役割

前のセクションで作成したミューテーター メソッドをテストできるように、app/Http/Controllers/MutatorController.php にコントローラーを作成しましょう。

リーリー

さらに、ミューテーター コントローラーにアクセスするには、routes/web.php ファイルに関連するルートを作成する必要があります。

リーリー

index メソッドでは、Post モデルを使用して新しい投稿を作成します。対応するミューテーター メソッドで strto lower 関数を使用したため、name 列の値を post title 値に設定する必要があります。

アクセサ稼働中

アクセサーの動作を確認するには、次の内容を含むコントローラー ファイルを作成しましょう。 app/Http/Controllers/AccessorController.php:

リーリー

同様に、アクセサー コントローラーにアクセスするには、routes/web.php ファイル内の関連付けられたルートを使用する必要があります。

リーリー

index メソッドでは、まず Post モデルを使用してサンプル投稿を読み込みます。

次に、name 列の値を確認します。この列にはアクセサー メソッドを定義しているため、この列は大文字で始まる必要があります。

これが、Eloquent ミューテーターとアクセサーの仕組みです。

###結論は###

今日は、Laravel の Eloquent ORM の修飾子とアクセサーの概念を検討しました。これは、データをデータベースに保存したりデータベースから抽出したりする前に、データを変更するための優れた方法を提供します。

Laravel を始めたばかりの方、または拡張機能を使用して知識、Web サイト、またはアプリケーションを拡張したいと考えている方のために、Envato マーケットで学習できるさまざまなコンテンツをご用意しています。

以上がLaravel のエレガントなアクセサーとモディファイアーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP vs. Flutter: モバイル開発に最適な選択 PHP vs. Flutter: モバイル開発に最適な選択 May 06, 2024 pm 10:45 PM

PHP vs. Flutter: モバイル開発に最適な選択

Laravel - アーティザンコマンド Laravel - アーティザンコマンド Aug 27, 2024 am 10:51 AM

Laravel - アーティザンコマンド

PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか? PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか? May 07, 2024 am 08:39 AM

PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか?

PHP単体テストツールの長所と短所の分析 PHP単体テストツールの長所と短所の分析 May 06, 2024 pm 10:51 PM

PHP単体テストツールの長所と短所の分析

PHP 分散システムのアーキテクチャと実践 PHP 分散システムのアーキテクチャと実践 May 04, 2024 am 10:33 AM

PHP 分散システムのアーキテクチャと実践

Laravel と CodeIgniter の最新バージョンの比較 Laravel と CodeIgniter の最新バージョンの比較 Jun 05, 2024 pm 05:29 PM

Laravel と CodeIgniter の最新バージョンの比較

Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Jun 01, 2024 pm 01:34 PM

Laravel と CodeIgniter のデータ処理機能はどのように比較されますか?

PHPコードの単体テストと統合テスト PHPコードの単体テストと統合テスト May 07, 2024 am 08:00 AM

PHPコードの単体テストと統合テスト

See all articles