ホームページ >バックエンド開発 >PHPチュートリアル >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 を始めたばかりの方、または拡張機能を使用して知識、Web サイト、またはアプリケーションを拡張したいと考えている方のために、Envato マーケットで学習できるさまざまなコンテンツをご用意しています。
以上がLaravel のエレガントなアクセサーとモディファイアーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。