web-dev-qa-db-ja.com

Carbon.php分離記号が見つかりませんでしたデータがありません

まず、すべてのレコードを取得し、

//get inventory items
$inv = inventory::all();

次に、取得したレコードをループし、created_atおよびupdated_atデータを変更して、人間が読める日付にします。

foreach($inv as $i){
    $i->created_at = date("M d, Y",strtotime($i->created_at));
    $i->updated_at = date("M d, Y",strtotime($i->updated_at));
}

しかし、それは私にこのエラーを返します、

Carbon.php行425のInvalidArgumentException:予期しないデータが見つかりました。予期しないデータが見つかりました。分離記号が見つかりませんでしたデータがありません

アイデア、ヘルプ、手がかり、提案、推奨事項はありますか?

こちらが私のモデルです

namespace App;

use Illuminate\Database\Eloquent\Model;

class inventory extends Model
{
    protected $table = "inventory";
    protected $primaryKey = "item_id";
    public $incrementing = false;

    public function profile(){
        return $this->belongsTo('App\profile','username');
    }
    public function inventory_images(){
        return $this->hasMany('App\inventory_images','item_id');
    }
}

そして、ブレードでは、私はちょうど使用することができます

{{ date("M d, Y",strtotime($i->created_at)) }}

{{ date("M d, Y",strtotime($i->updated_at)) }}

そしてそれはうまく動作します。

10
Juliver Galleto

あなたはこれについて間違った方法で行っていると思います。データベース内のデータは、人間が読みやすいである必要はなく、人間が実際にinteractsで表示するだけです。

これを解決するために、_created_at_のすべての呼び出しに適用されるカスタムaccessorメソッドを作成します。 _updated_at_に対してこれを再作成できます。

_public function getCreatedAtAttribute($timestamp) {
    return Carbon\Carbon::parse($timestamp)->format('M d, Y');
}
_

その後、_$model->created_at_を呼び出すと、属性はその形式で返されます。

何らかの理由でその形式で保存された日付が絶対に必要な場合は、次のような特定のタイプに従ってtimestamp列をフォーマットする必要があることを伝える属性をモデルに追加する必要があります。

_protected $dateFormat = 'M d, Y';
_

サイドノート
Carbonが関係する理由は、$table->timestamps()によって生成されるすべての列に適用されるためです。 _created_at_および_updated_at_列。
さらに、モデル内の列を_protected $dates = []_配列に追加すると、それらも自動的にCarbonによって処理されます。 。

6
Ohgodwhy