Laravel 收银员 DateTime::__construct():无法解析位置 0 (@) 的时间字符串 (@):
Laravel Cashier DateTime::__construct(): Failed to parse time string (@) at position 0 (@):
我在显示发票列表时有这段代码,这与 Laravel 出纳员官方文档中的代码相似或完全相同。我收到了这个奇怪的 DateTime::__construct(): Failed to parse time string (@) at position 0 (@): Unexpected character
错误,我不确定 @ 字符在替换应该的日期时做了什么。
@foreach (Auth::user()->invoices() as $invoice)
<tr>
<td>{{ $invoice->date()->toFormattedDateString() }}</td>
<td>{{ $invoice->total() }}</td>
<td>
<a href="/user/invoice/{{ $invoice->id }}">Download</a>
</td>
</tr>
@endforeach
有没有人有类似的经历?我也尝试在控制器中只 var_dump
每个 $invoice->date()
但错误仍然相同。
您似乎没有使用最新版本的 Laravel Cashier。在旧版本中,如果您按照代码进行操作,您会看到 Laravel Cashier 正在尝试格式化 属性 而 Stripe 不再 returns.
cashier\src\Invoice.php,第 48 行
$carbon = Carbon::createFromTimestampUTC($this->invoice->date);
根据 Stripe "API Upgrade Guide",您可以在 2019-03-14 看到,他们宣布了以下更改;
"The date property has been renamed to created."(来源:https://stripe.com/docs/upgrades#2019-03-14)
最新版本的 Cashier 通过首先检查 created
属性 是否存在解决了这个问题。
https://github.com/laravel/cashier/blob/9.0/src/Invoice.php#L48
编辑:如果您出于任何原因无法升级,而不是:
$invoice->date()->toFormattedDateString()
您可以尝试类似的方法:
Carbon::createFromTimestamp($invoice->asStripeInvoice()->created)->toFormattedDateString();
最近我遇到了同样的错误。标签上的日期是 null
.
我正在阅读 Stripe's docs,自 2019 年 3 月 14 日起,他们进行了一些更改。
Laravel Cashier
将停止获取发票日期,因为 Stripe 将不再提供它。
There are a few changes to the invoice object:
status_transitions
散列现在包含发票时的时间戳
已完成、已付款、标记为不可回收或作废。
-
date
属性 已重命名为 created。
finalized_at
属性 已移入 status_transitions
散列。
现在,我是怎么解决的?
- 我在
composer.json
文件中将 Laravel 出纳员的版本更改为 9.3
。
- 我打开了我的终端 运行
composer update
。
希望我的解决方案对您有用。问候!
我在显示发票列表时有这段代码,这与 Laravel 出纳员官方文档中的代码相似或完全相同。我收到了这个奇怪的 DateTime::__construct(): Failed to parse time string (@) at position 0 (@): Unexpected character
错误,我不确定 @ 字符在替换应该的日期时做了什么。
@foreach (Auth::user()->invoices() as $invoice)
<tr>
<td>{{ $invoice->date()->toFormattedDateString() }}</td>
<td>{{ $invoice->total() }}</td>
<td>
<a href="/user/invoice/{{ $invoice->id }}">Download</a>
</td>
</tr>
@endforeach
有没有人有类似的经历?我也尝试在控制器中只 var_dump
每个 $invoice->date()
但错误仍然相同。
您似乎没有使用最新版本的 Laravel Cashier。在旧版本中,如果您按照代码进行操作,您会看到 Laravel Cashier 正在尝试格式化 属性 而 Stripe 不再 returns.
cashier\src\Invoice.php,第 48 行
$carbon = Carbon::createFromTimestampUTC($this->invoice->date);
根据 Stripe "API Upgrade Guide",您可以在 2019-03-14 看到,他们宣布了以下更改;
"The date property has been renamed to created."(来源:https://stripe.com/docs/upgrades#2019-03-14)
最新版本的 Cashier 通过首先检查 created
属性 是否存在解决了这个问题。
https://github.com/laravel/cashier/blob/9.0/src/Invoice.php#L48
编辑:如果您出于任何原因无法升级,而不是:
$invoice->date()->toFormattedDateString()
您可以尝试类似的方法:
Carbon::createFromTimestamp($invoice->asStripeInvoice()->created)->toFormattedDateString();
最近我遇到了同样的错误。标签上的日期是 null
.
我正在阅读 Stripe's docs,自 2019 年 3 月 14 日起,他们进行了一些更改。
Laravel Cashier
将停止获取发票日期,因为 Stripe 将不再提供它。
There are a few changes to the invoice object:
status_transitions
散列现在包含发票时的时间戳 已完成、已付款、标记为不可回收或作废。-
date
属性 已重命名为 created。 finalized_at
属性 已移入status_transitions
散列。
现在,我是怎么解决的?
- 我在
composer.json
文件中将 Laravel 出纳员的版本更改为9.3
。 - 我打开了我的终端 运行
composer update
。
希望我的解决方案对您有用。问候!