2017-01-06 9 views
2
$rankArray = [ 
     'ranks' => $product[0]['productSalesRank']->pluck('rank'), 
     'dates' => $product[0]['productSalesRank']->pluck('created_at') 
    ]; 


    $rankArray['dates']->transform(function ($item) { 
     return $item->format('d-m-Y'); 
    }); 

データベースからcreated_at/updated_atの日付を取得するたびに変換する必要がありますので、これは簡単ではありませんか?データベースから炭素の日付を取得する

私は、カーボンなどの日付を維持したいのですが、いくつかの例では、ちょうど

答えて

1

日付を準備するためのすべての作業を行う、あなたのproductSalesRankのモデル(?)にゲッターを設定します。

モデル:

class ProductSalesRank extends Model 
{ 
    protected $dates = ['created_at', 'updated_at']; 
    // whatever other columns you want to use Carbon on ^. 

    public function getCreatedAtHumanAttribute() { 
     return $this->created_at->format('d-m-Y'); 
    } 
} 

ビュー/コントローラ/どこ:

$productSalesRank->created_at_human; // will print it like you defined it in the model. 

なぜ_human?

コードの後に​​、created_at値にCarbon機能が必要になることがあります。 format()を使用すると、Carbonフィーチャから取り除かれた文字列が返されます。


[更新]

は、以前の私たちは、ゲッター/アクセサを作成しました。私が知る限り、次のような変数を渡すことはできません:

->created_at_human('mm')これはメソッドではないので、アクセッサです。

モデルで、関数を作成します。あなたのビューで

public function myFunction($format) { 
    return $this->created_at->format($format); 
} 

、シンプル:

$productSalesRank->myFunction('d-m-Y'); 
+0

これは素晴らしいです、これを行うことは可能ですか?public function getCreatedAtHumanAttribute($ format){ return $ this-> created_at-> format($ format); } – LeeJ

+0

そのようにはできませんが、別の方法では可能です。私は私の答えを更新します。 – Spacemudd

+1

@LeeJ私は自分の答えを更新しました。 – Spacemudd

0

を「値」をしたいですかあなたは、自動的に必要な形式にデータを変換し、あなたのモデルにアクセサを追加することができます。詳細:モデルで定義してテーブルの関連モデルでhttps://laravel.com/docs/5.2/eloquent-mutators#accessors-and-mutators

+0

これは私が行うにはしたくないカーボン能力を失います。私はLaravelにちょうど同じ解決策があることを望んでいた 日付 '=> $ product [0] [' productSalesRank '] - > pluck(' created_at ') - >形式(' dm-Y ') – LeeJ

0

class ModelName{ 

     //add this line 
     protected $dates = ['created_at','updated_at']; 
} 

$datesは自動的にあなたの日付の炭素インスタンスを提供します。

+0

問題は、colはすでにCarbonインスタンスです。 – LeeJ

+0

デフォルトでCarbonインスタンスなので、 'created_at'と' updated_at'を '$ dates'プロパティに追加する必要はありません。 –

関連する問題