2017-10-09 35 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。