2017-10-09 6 views
0

J'essaie d'étendre le plugin utilisateur octobre cms à l'événement de registre et d'obtenir les données de poste et écrire l'utilisateur et la newsletter s'abonner à la table des lettres lors de l'enregistrement dit "SQLSTATE [42S22]: Colonne non trouvée: 1054 Colonne inconnue 'updated_at' dans 'liste des champs' (SQL: insérer dans cg_newsletter (updated_at,) valeurs" Je ne sais pas pourquoi il se plaint de la date de création ou de mise à jour ne pas les créer dans le modèle et je ne suis pas en train de mettre à jour ces colonnes. Toute aide grandement appréciée.octobre cms extension du plugin with event Le modèle n'est pas instancié correctement

modèle

<?php 


namespace CG\Newsletter\Models; 

use Model; 

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

    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; 


} 

plugin.php

<?php 


namespace CG\Newsletter; 


use System\Classes\PluginBase; 
use Log; 
use Event; 
use Rainlab\User\Components\Account as RainlabAccount; 
//use Rainlab\User\models\user as RainlabUser; 
use Request; 
use Illuminate\Support\Facades\Input; 
use Rainlab\user\Models\User as RainlabUser; 
use Auth; 
use CG\Newsletter\Models\Newsletter; 


class Plugin extends PluginBase { 


    public function registerSettings() { 

     return [ 
       'settings' => [ 
         'label' => 'Newsletter', 
         'description' => 'Newsletter subscription', 
         'category' => 'misc', 
         'icon' => 'icon-shopping-basket', 
         'class' => 'CG\Newsletter\Models\Settings', 
         'order' => 500, 
         'keywords' => 'newsletter settings', 
         'permissions' => [ 
           'admin' 
         ]  
       ] 
     ]; 
    } 

    public function boot() 
    { 

     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->belongsTwo = $user->id; 
       $newsletter->isSubscribed =1; 
       $newsletter->save(); 

      } 
     }); 



    } 

} 

fichier de migration

<?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

vous pouvez en effet désactiver les horodateurs. Mais il est recommandé de les utiliser et, par conséquent, les horodatages sont activés par défaut.

Vous pouvez facilement ajouter les colonnes nécessaires dans votre fichier de migration en ajoutant $table->timestamps();. Cela ajoutera deux champs/colonnes à la table: created_at et updated_at.