Laravel 模型有时会转换 Carbon 对象,并且无法使用 Carbon\Carbon 类型的对象作为数组错误
P粉125450549
2023-08-30 13:56:16
<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>
$model->checkin_date_time
不是"2022-12-12 22:22:22"
它是一个 Carbon(DateTime 的子类)对象。当您尝试将其转换为字符串(使用echo
、任何类型的显示或将其注入另一个字符串中时,它会自动格式化为Y-m-d h:i:s
如果您想以其他格式输出,请使用
->format()
方法:无论如何,使用偏移量(
$check_in[10] =
语法)来修改字符串中的字母确实是一个坏主意,这种微优化不值得。