ホームページ >バックエンド開発 >PHPチュートリアル >Laravelの属性
Laravel Eloquent モデルで、アクセサー メソッドから profile_image
プロパティを使用し、プロパティが空または false の場合にフォールバック値として /user.png
を返したい場合は、モデル内でアクセサーを定義できます。その方法は次のとおりです:
<code class="language-php">class User extends Authenticatable { // 其他模型代码... public function getProfileImageAttribute($value) { return $value ? asset('/storage' . $value) : url('/user.png'); } }</code>
User
モデルでこのアクセサーを定義した後、User
モデル インスタンスの profile_image
プロパティにアクセスするたびに、このアクセサー メソッドが通過します。値が空でない場合 ($value
が true と評価される場合)、その値に基づいてリソース URL が返されます。それ以外の場合は、代替 URL /user.png
を返します。
その後、Blade テンプレートで次のものを直接使用できます。
<code class="language-blade">auth()->user()->profile_image</code>
追加のロジックは必要ありません:
<code class="language-blade"><img alt="User Image" src="{{ auth()->user()->profile_image }}"></img></code>
メソッド名が getProfileImageAttribute($value)
なのはなぜですか?
Laravel の Eloquent ORM では、プロパティ アクセサーは 3 つの部分からなる命名規則を使用して定義されます。
get
: これは、メソッドがゲッター アクセサーであることを示します。プロパティの値を取得するときに使用されます。
AttributeName
: この部分は、アクセサーを定義するプロパティの名前を表します。この場合はProfileImage
です。通常、プロパティ名には「StudlyCaps」大文字小文字が使用されます。これは、名前内の各単語が大文字で始まり、単語間にスペースやアンダースコアが含まれないことを意味します。
Attribute
: この部分は、メソッドがプロパティ アクセサーであることを示します。したがって、これらをまとめると、getProfileImageAttribute($value)
は次のことを意味します:
get
: これはゲッター アクセサーです。 ProfileImage
: profile_image
属性に使用されます。 Attribute
: これはプロパティ アクセサーです。 この命名規則は、プロパティ アクセサーを Eloquent モデル内の対応するプロパティに自動的にマップするために使用されます。 $model->profile_image
を使用して profile_image
プロパティの値を取得すると、Laravel は内部で getProfileImageAttribute
という名前のアクセサーメソッドを探してプロパティの値を提供します。この規則により、Laravel は追加の設定を行わずに、必要に応じてアクセサー メソッドを自動的に呼び出すことができます。
以上がLaravelの属性の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。