Les modèles Laravel convertissent parfois des objets Carbon et ne peuvent pas utiliser des objets de type Carbon\Carbon comme erreurs de tableau
P粉125450549
2023-08-30 13:56:16
<p>Je fais quelques manipulations de chaînes pour effectuer des conversions de fuseau horaire à partir d'une ancienne base de code. </p>
<p>Je dois mettre <code>T</code> entre la date et l'heure, j'utilise la logique suivante pour ce faire. </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>Pour une raison étrange, j'obtiens cette erreur. </p>
<pre class="brush:php;toolbar:false;">Impossible d'utiliser un objet de type CarbonCarbon comme tableau</pre>
<p>Mais ce n’est pas toujours le cas. Seulement 1 à 2 erreurs pour 2 000 à 3 000 requêtes. </p>
<p>J'utilise Carbon ailleurs (même dans d'autres parties de la même fonction) mais sans aucune conversion de la propriété <code>$model</code> </p>
<p>Je ne sais pas pourquoi <code>$model->checkin_date_time</code> est converti en objet Carbon. </p>
$model->checkin_date_time
不是"2022-12-12 22:22:22"
它是一个 Carbon(DateTime 的子类)对象。当您尝试将其转换为字符串(使用echo
、任何类型的显示或将其注入另一个字符串中时,它会自动格式化为Y-m-d h:i:s
Si vous souhaitez sortir dans un autre format, veuillez utiliser la méthode
->format()
:De toute façon, utiliser des offsets (
$check_in[10] =
syntaxe) pour modifier les lettres d'une chaîne est vraiment une mauvaise idée et cette micro-optimisation n'en vaut pas la peine.