Laravel 5.3 Création de Modèles de rendement “du Champ ne doit pas avoir de valeur par défaut”
Je suis en utilisant Laravel et Éloquent pendant deux ans et aujourd'hui j'ai décidé d'installer un nouveau Laravel 5.3 et d'essayer quelque chose avec elle.
J'ai utilisé un vieux schéma de base de données de la mine et créé mes modèles, défini à remplir les colonnes. C'est ce que mon Page
modèle ressemble:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Page extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'language',
'title',
'slug',
'url',
'description',
'tags',
'wireframe',
'order',
'is_active'
];
public function menus()
{
return $this->belongsToMany(Menu::class);
}
}
url
attribut est un TEXT
colonne de type MySQL, donc si je ne passe pas toute la valeur lors de la création d'un modèle, il doit être une chaîne vide. Au lieu de cela, je reçois SQLSTATE[HY000]: General error: 1364 Field 'url' doesn't have a default value
erreur.
Voici ma tentative de créer un modèle Post:
Page::create([
'title' => $root_menu['title'],
'slug' => $root_menu['slug'],
'language' => $this->language,
'wireframe' => key(config('cms.wireframe')),
'order' => 0
]);
Est-ce un Laravel 5.3 question connexe ou ai-je raté quelque chose? Merci d'avance pour votre aide.
OriginalL'auteur Guney | 2016-09-02
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle l'erreur a été expliqué par @Nicklas.
La raison de ce qui se passe maintenant, cependant, est que Laravel 5.3 utilise
strict
mode pour MySQL par défaut.Si vous souhaitez revenir à la version antérieure problème, mettez à jour votre
config/database.php
fichier et mettre en'strict' => false
pour votre connexion.OriginalL'auteur patricus
Vous essayez d'insérer un objet, sans 'URL' attribut dans une table qui a une " URL " colonne sans valeur par défaut. Si la base de données ne peut pas savoir quoi faire avec cette colonne.
Vous pouvez faire une des trois choses.
Post de la migration ou le schéma, si vous avez besoin de plus d'aide.
Oui? Dans ce cas, il n'est tout simplement pas insérer quoi que ce soit dans le champ même pas une valeur null.
Dans ma situation, j'ai réussit a obtenu colonne vide. Quand je l'ai fait nullable() par défaut, tout a commencé à bien fonctionner.
OriginalL'auteur Nicklas Kevin Frank