Carbon dans Laravel 4 InvalidArgumentException - Données inattendues trouvées. Données de suivi
Je vais essayer d'obtenir un Éloquent résultat de la requête pour DB::raw("DATE_FORMAT(created_at, '%m-%d-%Y %r') AS created_at")
mais à chaque fois que je reçois cette exception de Carbone:
InvalidArgumentException
Unexpected data found. Trailing data
Si je le changer pour juste created_at
au lieu d'utiliser MySQL DATE_FORMAT()
fonction, elle obtient les données sans problème.
Je n'ai pas seulement fait ce genre de formatage de la date sans problème avant, mais j'ai vérifié tous les champs dans la table de base de données (il y a seulement 10 pour cette graine) et chacun est un standard de date valide, alors je me demandais pourquoi le Carbone est la promotion d'un ajustement.
L'exécution de cette dans Laravel 4.1.
source d'informationauteur eComEvo
Vous devez vous connecter pour publier un commentaire.
Dans un
Eloquent
résultat de la requête (modèle) chaquedate
champ est un carbone objetcela signifie que, si vous interrogez un modèle qui contient toutetimestamp
domaine de lacreated_at
updated_at
(essentiellement créé à l'aide detimestamps()
lors de la migration) etdeleted_at
Laravel
les convertit en unCarbon
objet et vous pouvez utiliser toutes les méthodes publiques deCarbon
par exemple:Ainsi, vous pouvez directement utiliser une méthode publique de
Carbon
sur untimestamp
terrain disponible dans un modèle. Si vous essayez ceci:Alors la sortie sera:
Donc, si vous voulez
format
une date, vous pouvez utiliser:Mise à jour:
Si vous souhaitez modifier ce comportement, signifie que, si vous voulez dire
Laravel
que, les champs qui doivent être converties automatiquement enCarbon
objet, puis vous pouvez passer que par la création d'une méthode dans votre modèle comme:De totalement désactiver la date de mutations, il suffit de retourner un tableau vide de la
getDates
méthode. Pour plus de détails, consultez Date Des Mutateurs surLaravel
site web.Je me rends compte de la question d'origine fait référence à MySQL, mais j'ai eu la même erreur avec MSSQL. Le problème s'est avéré être que MSSQL de la colonne datetime type a une précision de .001 secondes, mais j'ai été la définition de mon modèle de format pour toute précision:
En utilisant les nouvelles DateTime2 type de colonne et la désactivation de la précision, j'ai corrigé l'erreur. I. e.
Vous pouvez modifier le format d'
getDateFormat
bien sûr.Si ça aide quelqu'un d'autre, j'ai eu le même message d'erreur lorsque vous tentez de copier un jour.
S'avère Laravel jette la valeur de
$user->last_login
DateTime+chaîne Timezone. Ce n'est plus un objet de Carbone.Vous pouvez réparer l'erreur à l'aide de copies d'un seul Carbone objet (exemple ci-dessous), ou par la mise en place des mutateurs (setters) sur le modèle sous-jacent.