搜尋

首頁  >  問答  >  主體

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粉125450549457 天前505

全部回覆(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
  • 取消回覆