14

リソース モデルのデフォルトの created_at フィールドの形式を変更しようとすると、次のエラーが発生します。

{  
   "error":{  
      "type":"InvalidArgumentException",
      "message":"Unexpected data found.
                 Unexpected data found.
                 The separation symbol could not be found
                 Unexpected data found.
                 A two digit second could not be found",
      "file":"\/var\/www\/html\...vendor\/nesbot\/carbon\/src\/Carbon\/Carbon.php",
      "line":359
   }
}

上記のエラーを生成したコードは次のとおりです。

$tile = Resource::with('comments, ratings')->where('resources.id', '=', 1)->first();
$created_at = $tile->created_at;
$tile->created_at = $created_at->copy()->tz(Auth::user()->timezone)->format('F j, Y @ g:i A');

上記のコードから削除すると、正常に->format('F j, Y @ g:i A')動作しますが、必要な形式ではありません。問題は何でしょうか?アプリの他の場所にほぼ同じコードがあり、エラーなく動作します。

更新: を使用setToStringFormat('F j, Y @ g:i A')してもエラーは発生しませんが、 が返されますnull

4

7 に答える 7

14

私のモデルに次のコードを追加するとうまくいきました:

public function getCreatedAtAttribute($date)
{
    if(Auth::check())
        return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->copy()->tz(Auth::user()->timezone)->format('F j, Y @ g:i A');
    else
        return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->copy()->tz('America/Toronto')->format('F j, Y @ g:i A');
}

public function getUpdatedAtAttribute($date)
{
    return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('F j, Y @ g:i A');
}

これにより、必要な形式でcreated_atを使用できます。updated_at

于 2014-08-10T16:19:14.623 に答える
6

私は同じ問題を経験しましたが、答えを探していると、新しい \DateTime('0000-00-00 00:00:00') の結果をどのように説明しますか? .

フィールドの値が「0000-00-00 00:00:00」にならないように、データベースの日時列をデフォルト値 = NULL で null 許容に変更することにしました。

私のlaravel 5への移行は次のようになります。

Schema::table('table', function($table)
{
    $table->dateTime('created_at')->nullable()->default(null)->change();
    $table->dateTime('updated_at')->nullable()->default(null)->change();
});
于 2015-06-22T12:35:12.667 に答える
1

ユーザーにこのコードを保存する前に、指定された日付を解析する必要がありました

Carbon::parse($request->input('some_date'));
于 2020-03-10T10:00:58.697 に答える