Laravel-Modelle konvertieren manchmal Carbon-Objekte und können keine Objekte vom Typ Carbon\Carbon als Array-Fehler verwenden
P粉125450549
2023-08-30 13:56:16
<p>Ich führe einige Zeichenfolgenmanipulationen durch, um Zeitzonenkonvertierungen aus einer alten Codebasis durchzuführen. </p>
<p>Ich muss <code>T</code> zwischen Datum und Uhrzeit einfügen. Dazu verwende ich die folgende Logik. </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>Aus irgendeinem seltsamen Grund erhalte ich diese Fehlermeldung. </p>
<pre class="brush:php;toolbar:false;">Objekt vom Typ CarbonCarbon kann nicht als Array verwendet werden</pre>
<p>Aber das ist nicht immer der Fall. Nur 1–2 Fehler pro 2000–3000 Anfragen. </p>
<p>Ich verwende Carbon an anderer Stelle (sogar in anderen Teilen derselben Funktion), aber ohne jegliche Konvertierung der <code>$model</code>-Eigenschaft des <code>checkin_date_time</code> </p>
<p>Ich bin nicht sicher, warum <code>$model->checkin_date_time</code> in ein Carbon-Objekt konvertiert wird. </p>
$model->checkin_date_time
不是"2022-12-12 22:22:22"
它是一个 Carbon(DateTime 的子类)对象。当您尝试将其转换为字符串(使用echo
、任何类型的显示或将其注入另一个字符串中时,它会自动格式化为Y-m-d h:i:s
如果您想以其他格式输出,请使用
->format()
方法:无论如何,使用偏移量(
$check_in[10] =
语法)来修改字符串中的字母确实是一个坏主意,这种微优化不值得。