J'ai une colonne activée avec le bit de type DataType (1). J'essaie d'économiser 0 ou 1 valeur dans la base de données par Laravel Eloquant.
'enabled' => [
'0' => 'No',
'1' => 'Yes',
],
5 Réponses :
Vous avez besoin de type Tinyint, dans votre fichier de migration lorsque vous migrez avec ou p> boolean ("Columin_name") code> Il crée une colonne avec TYPE TINYINT (1 ) Et vous pouvez définir pour modéliser True / 1 ou FAUX / 0 et sauvegarder. Par exemple p>
Veuillez ajouter une explication à votre réponse, de sorte que d'autres puissent en apprendre - pourquoi Tinyint est-il nécessaire?
Lorsque vous migrez avec Boolean («Nom de colonne»), il crée une colonne avec Type Tinyint (1) et vous pouvez définir pour modéliser True / 1 ou False / 0 et enregistrez. Par exemple $ Modèle-> boolean_field = true; $ Modèle-> sauvegarder (); code> il sera identique à $ modèle-> boolean_field = 1; $ modèle-> sauvegarder (); code>
Veuillez ajouter toutes ces informations à votre réponse en le modifiant. Ne mettez pas d'explications dans la section des commentaires
Selon le manuel MySQL, vous pouvez utiliser doit utiliser Ainsi, utilisez: p> https://dev.mysql.com/doc/refman/8.0/fr/her-vendor-Data-Types.html P> p> bool code> et boolean code> qui sont des alias de tinyint code> pour stocker 0 ou 1 valeur
tinyint code>: une valeur de
zéro est considéré comme faux. Sans zéro
Les valeurs sont considérées comme vraies. P>
BlockQuote>
Un booléen à MySQL est Généry un tinyint.
Les modèles éloquents peuvent lancer Boolean Automaticaly: https://laravel.com/docs/6.x/eloquent-mutators#attribute-casting P>
$model->enabled = $inputs['enabled']==='Yes'; $model->save();
Et si j'essaie de sauver la valeur "non"?
$ entrées ["activé '] ===' oui 'renvoie false code> de sorte qu'il fonctionne
Fondamentalement, j'utilise une liste déroulante à partir de laquelle je sélectionne oui ou non pour enregistrer une valeur 1 ou 0 dans la base de données, respectivement. Je dois gérer les deux choses en même temps. Pouvez-vous s'il vous plaît me guider?
Donc, vos entrées $ ["activées"] code> doivent être égales à 0 ou 1? Dans ce cas, vous ne devez faire que $ Model-> activé = $ entrées ['activé'] code> et fonctionne comme prévu.
Merci pour votre réponse. Oui, ce faisant, il retourne 0 ou 1, mais ce n'est pas épargne en effectuant $ modèle-> sauvegarder (); et produisant des données d'erreur "String Data, droite tronquée: 1406 Données trop longues pour la colonne" activée ""
Il n'est pas possible si vous l'avez jeté à un booléen!
Non, je ne l'ai pas jeté à Boolean.
Vous pouvez également utiliser des mutator pour forcer les valeurs. et dans le code du client p> puis la méthode est appelée lors de la création et du "activé". deviendra 1 p> doc: https://laravel.com/docs/ 5.8 / Eloquent-mutateurs p> p>
Exemple: dans votre modèle, ajoute:
Alors j'avais résolu ma question en ajoutant juste dB :: cru ();
comme, p> éloquent ne fonctionne pas en appelant la valeur booléenne directement, D'abord, vous devez passer par vos valeurs dans dB :: cru (); p> Cela fonctionne comme un charme. P> p>
Il semble que vous économisez des données '' non '' non ',' oui 'qui est une chaîne non 0 ou 1
en faisant var_dump ($ entrées ["activé"]); Cela me montre 0 ou 1. Cela produit une erreur sur sauvegarde ();
Est-ce que cela répond à votre question? Laravel 4.2 bits DataType Problème