搜索

首页  >  问答  >  正文

Laravel 模型有时会转换 Carbon 对象,并且无法使用 Carbon\Carbon 类型的对象作为数组错误

<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粉125450549P粉125450549458 天前506

全部回复(1)我来回复

  • P粉011684326

    P粉0116843262023-08-31 09:37:41

    $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] = 语法)来修改字符串中的字母确实是一个坏主意,这种微优化不值得。

    回复
    0
  • 取消回复