Heim  >  Fragen und Antworten  >  Hauptteil

Laravel-Modelle konvertieren manchmal Carbon-Objekte und können keine Objekte vom Typ Carbon\Carbon als Array-Fehler verwenden

<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>
P粉125450549P粉125450549439 Tage vor494

Antworte allen(1)Ich werde antworten

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

    Antwort
    0
  • StornierenAntwort