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] =
語法)來修改字串中的字母確實是一個壞主意,這種微優化不值得。