Laravel 模型有时会转换 Carbon 对象,并且无法使用 Carbon\Carbon 类型的对象作为数组错误
P粉125450549
P粉125450549 2023-08-30 13:56:16
0
1
533
<p>我正在执行一些字符串操作,以从旧代码库进行时区转换。</p> <p>我需要将 <code>T</code> 放在日期和时间之间,我使用以下逻辑来执行此操作。</p> <pre class="brush:php;toolbar:false;">$check_in= $model->checkin_date_time; // 2022-12-12 22:22:22 $check_in[10] = 'T'; // 2022-12-12T22:22:22</pre> <p>由于某种奇怪的原因,我收到此错误。</p> <pre class="brush:php;toolbar:false;">Cannot use object of type Carbon\Carbon as array</pre> <p>但情况并非总是如此。每 2000 - 3000 个请求仅出现 1-2 次错误。</p> <p>我在其他地方(甚至在同一函数的其他部分)使用 Carbon,但没有任何 <code>$model</code> 的 <code>checkin_date_time</code> 属性的转换。</p> <p>我不确定为什么 <code>$model->checkin_date_time</code> 被转换为 Carbon 对象。</p>
P粉125450549
P粉125450549

全部回复(1)
P粉011684326

$model->checkin_date_time 不是 "2022-12-12 22:22:22" 它是一个 Carbon(DateTime 的子类)对象。当您尝试将其转换为字符串(使用 echo、任何类型的显示或将其注入另一个字符串中时,它会自动格式化为 Y-m-d h:i:s

如果您想以其他格式输出,请使用 ->format() 方法:

$check_in = $model->checkin_date_time->format('Y-m-d\Th:i:s');

无论如何,使用偏移量($check_in[10] = 语法)来修改字符串中的字母确实是一个坏主意,这种微优化不值得。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板