2017-02-28 4 views
2

私はテーブルabilitiesを持っていますが、それにはいくつかのエントリがあります(テーブルフォーマットにしないと申し訳ありません):Laravel - pluck()で取得したコレクション内の文字列値のフォーマット

-id|name 
-1|create_user 
-2|delete_user 
-3|ban_user 

Righty O、私は次のコードを実行すると:

$abilities = App\Ability::all()->pluck('name','id') 

を私はいじくりで次の出力を得る:

Illuminate\Support\Collection {#861 
all: [ 
    1 => "create_user", 
    2 => "delete_user", 
    3 => "ban_user", 
], 

}

1=>"Create User" ...のように表示します。アンダースコアはスペースで置き換えられ、両方の単語は大文字に変換されます。それについてどうすればいいですか?私はそれをこの見解のために試しています。

答えて

4

あなたはan accessorを定義することができます。

public function getModifiedNameAttribute($value) 
{ 
    return ucfirst(str_replace('_', ' ', $value)); 
} 

そして、それを使用します。

$abilities = App\Ability::pluck('modified_name', 'id'); 
+1

以下のようなあなたのモデル自体ではなく、のようなものを得るためにこれを扱うことができます'Created User'を使うと、 'return ucwords();'を使う方が良いでしょう。 –

0

あなたは良いことだ

 /** 
    * @return string 
    */ 
    public function getNameAttribute() 
    { 
     return ucwords(str_replace('_', ' ', $this->name)); 
    } 
関連する問題