2017-10-10 3 views
0

J'essaie de mettre à jour un modèle mais il est complétant le champ n'a pas de valeur par défaut, mais j'en mets un avant de sauvegarder dans la méthode de démarrage de mon plugin voir ci-dessous le code où je viens d'exposer les détails, je ne sais pas pourquoi il pense qu'il n'y a pas de valeur. Toute aide grandement appréciéeoctobre cms "SQLSTATE [HY000]: Erreur générale: 1364 Le champ n'a pas de valeur par défaut

plugin.php

public function boot() 
{ 


// RainlabUser::extend(function ($model) { 
//  $model->hasOne['newsletter'] = [ 
//   'CG\Newsletter\Models\Newsletter', 'table' => 
//   'cg_newsletter', 'key' => 'user_id' 
//  ]; 
// }); 

    Event::listen('eloquent.updating: RainLab\User\Models\User', function(){ 
      $data = post(); 

      if (array_key_exists('email', $data)) { 

      Log::debug(__FUNCTION__,[$data['email']]);      
      $user = RainlabUser::findByEmail($data['email']); 

      Log::debug(__FUNCTION__,[$user->id]); 
      $newsletter = new Newsletter(); 
      $newsletter->isSubscribed = 1; 
      $newsletter->user_id = $user->id; 


      Log::debug(__FUNCTION__,[$newsletter]); 
      $newsletter->save(); 

      } 
    }); 



} 

modèle

use Model; 

/** 
* Model 
*/ 
class Newsletter extends Model {  

    /** 
    * Indicates if the model should be timestamped. 
    * 
    * @var bool 
    */ 
    public $timestamps = false; 

    protected $primaryKey = 'id'; 

    /** 
    * 
    * @var string The database table used by the model. 
    */ 
    public $table = 'cg_newsletter'; 


    public $belongsTwo = [ 
     'user' => ['rainlab/user/models/user'] 
    ]; 

    public $isSubscribed; 


} 

schéma

<?php namespace CG\Newsletter\Updates; 

use Schema; 
use October\Rain\Database\Updates\Migration; 

class BuilderTableCreateCgNewsletter extends Migration 
{ 
    public function up() 
    { 
     Schema::create('cg_newsletter', function($table) 
     { 
      $table->engine = 'InnoDB'; 
      $table->increments('id'); 
      $table->integer('user_id')->unsigned()->index(); 
      $table->tinyInteger('isSubscribed'); 
      $table->foreign('user_id') 
       ->references('id') 
       ->on('users') 
       ->onDelete('CASCADE'); 

     }); 
    } 

    public function down() 
    { 
     Schema::dropIfExists('cg_signshop_menus'); 
    } 
} 

Répondre

0

Après avoir retiré la ligne publique isSubscribed $; à partir du modèle, il a travaillé et enregistré correctement.