Laravel De Carbone De Données Manquantes
Dans mon modèle j'ai le texte suivant:
protected $dates = [
'start',
'end',
'created_at',
'updated_at'
];
Je suis à l'aide d'un datetime picker pour insérer le début et dates de fin, dans ce format:
2016-01-23 22:00
Sans les secondes. Quand je le fais comme ça, j'obtiens cette erreur:
InvalidArgumentException in Carbon.php line 425:
Data missing
at Carbon::createFromFormat('Y-m-d H:i:s', '2016-01-23 22:00') in Model.php line 3015
Si je dois inclure les secondes, il fonctionne. Les secondes ne sont pas important pour moi, et je ne veux pas les inclure dans mon datetime sélecteur de champs. Moyen de contourner ce problème, donc je peux encore utiliser ces champs les champs de date?
OriginalL'auteur Hardist | 2016-01-23
Vous devez vous connecter pour publier un commentaire.
tl;dr
La date de votre chaîne et votre format de date est différente, vous devez changer la chaîne de format ou de modifier la date de la ficelle afin qu'ils correspondent.
Explication
Le Problème
Cette erreur survient lorsque le Carbone est
createFromFormat
fonction receieves une chaîne de date qui ne correspond pas à la chaîne de format. Plus précisément, cela vient de l'DateTime::createFromFormat
fonction, car le Carbone appelle simplement que:Pas assez de données
Si votre date de chaîne est "plus court" que la chaîne de format comme dans ce cas:
Carbone jeter:
Trop de données
Si votre date de chaîne est "plus" que la chaîne de format comme dans ce cas:
Carbone jeter:
Sous le capot
Selon la documentation sur les mutateurs le format de date par défaut est:
'Y-m-d H:i:s'
. La date de traitement qui se passe dans le Du modèleasDateTime
function. Dans le dernier état de lagetDateFormat
function est appelé, c'est là que le format personnalisé. Le format par défaut est défini dans la Base de donnéesGrammaire
de la classe.Solution
Vous devez vous assurer que la date de chaîne correspond à la chaîne de format.
Modifier le format de la chaîne
Vous pouvez remplacer le format par défaut de la chaîne comme ceci:
Il y a deux problèmes avec cette approche:
$dates
tableau.Modifier et mettre en forme la date chaînes
Ma solution recommandée est que le format de la date doit rester la valeur par défaut
'Y-m-d H:i:s'
et vous devez compléter les parties manquantes de la date, comme ceci:Et lorsque vous souhaitez utiliser la date à laquelle vous devez le formater:
Bien sûr, les champs doivent être muté pour les dates:
J'ai le même problème, cette solution n'en a pas aidé moi,pouvez-vous s'il vous plaît prendre un coup d'oeil
Ce qui est excellent pour datetimes, mais un pain PITA pour la date-seuls les champs. Il n'est pas judicieux d'ajouter un temps à ceux & de plus, ils ne peuvent pas être stockés de cette manière; toutefois, il y a une grande ambiguïté dans la manière de nommer, comme ils sont les "dates" dans le vrai sens du terme
OriginalL'auteur totymedli
Vous pouvez définir l' $dateFormat dans votre modèle en tant que Chrétien dit, mais si vous ne voulez pas jusqu'à dire que la updated_at et created_at des champs dans l'opération, vous pouvez utiliser les événements pour "corriger" l'objet datetime avant de l'enregistrer dans la base de données.
Ici, vous avez l'officiel de la doc à ce sujet: https://laravel.com/docs/5.2/eloquent#events
$dateFormat
option.OriginalL'auteur subzeta
Modèles
Cette fonction désactivée, les émulations de carbone dans Datetimes
https://laravel.com/docs/5.0/eloquent#date-mutators
OriginalL'auteur Cristhian Carreño
Vous devez définir
protected $dateFormat
à'Y-m-d H:i
' dans votre modèle, voir https://laravel.com/docs/5.2/eloquent-mutators#date-mutatorsOriginalL'auteur mazedlx
Assurez-vous que vous n'êtes pas en omettant les "created_at" ou "updated_at" les champs en quelques lignes dans votre base de données, qui sont nécessaires; si c'est le cas, supprimez les dossiers où ils ont ces champs vides ou entrez une valeur dans le timestamp valide format, exemple '2018-09-01 15:18:53'.
OriginalL'auteur davidprogramador01