2017-01-17 11 views
1

モデルのカスタム出力を作成する場合は、メソッドまたはghost属性を使用する必要があります。私のDBには列first_nameとlast_nameがあり、私は自分のビューでfullNameとしてそれらにアクセスしたいと言うことができます。どちらが良いです:モデルでカスタム出力にゴースト属性またはメソッドを使用する

//Model 
public function fullName() 
{ 
    return $this->first_name . ' ' . $this->last_name; 
} 
//View 
{{ $model->fullName() }} 

それとも

//Model 
public function getFullNameAttribute() 
{ 
    return $this->first_name . ' ' . $this->last_name; 
} 
//View 
{{ $model->fullName }} 
+0

最初の方が良いと思います – Buglinjo

+2

アクセッサーを使用してください。 –

+0

Absoultely second one。このタイプのユースケースは、アクセサーが実装された理由とまったく同じです。 – devk

答えて

1

主観的な質問は、通常、対象の答えを持っている - この質問は例外です。

属性バージョンをほぼ確実に使用して、雄弁なシリアル化を簡単に利用できるようにしてください。

Laravelは、Eloquentモデルのために、get[name]Attributeの頭文字のアトリビュートを持っています.Laravelの初期バージョン以降、周囲にあります。 Laravelが全体として働くように、そのコンセプトが込められていることを意味します。あなたの例のための

シリアライズの例は次のようになります。

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    protected $appends = ['full_name']; 

    public function getFullNameAttribute() 
    { 
     return $this->first_name . ' ' . $this->last_name; 
    } 
} 

その後、full name属性が自動魔法のこのモデルが存在することをあらゆる形で利用できるようになること - それはそれでElqouentフォームだのかどうか、あるいは場合配列(toArray)またはjson(toJSON経由)に変換されています。

アプリケーションの「外部」から、full_nameがdbテーブルにあるかどうか、または派生属性の場合は、アクセスと使用に使用できる別の属性があるため、アプリケーションの他の部分がわからないからです。

関連する問題