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;">Carbon\Carbon 型のオブジェクトを配列として使用できません</pre>
<p>しかし、常にそうとは限りません。 2000 ~ 3000 リクエストあたりエラーは 1 ~ 2 件のみ。 </p>
<p>Carbon を他の場所 (同じ関数の他の部分でも) で使用していますが、<code>checkin_date_time</code> の <code>$model</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] =
構文) を使用するのは本当に悪い考えであり、このような微細な最適化には価値がありません。