2017-10-09 29 views
0

我试图扩展十月cms用户插件listin到注册事件,并获取发布数据,并写入用户和通讯订阅时事通讯表保存时说“SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列'updated_at'(SQL:插入到cg_newsletterupdated_at,created_at)values。”我不确定它为什么抱怨创建或更新的日期在模型中不创建它们,我不试图更新这些列。任何帮助极大的赞赏。十月cms扩展插件与事件模型没有正确实例化

模型

<?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(); 

      } 
     }); 



    } 

} 

迁移文件

<?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'); 
    } 
} 

回答

0

事实上,您可以禁用时间戳。但是最好使用它们,因此默认情况下启用时间戳。

您可以通过添加$table->timestamps();轻松地在迁移文件中添加所需的列。这将在表中添加两个字段/列:created_at和updated_at。