2017-06-14 181 views
0

我在我的項目中使用雄辯(我不使用Laravel),它可以像預期的那樣開箱即用。只有問題,我無法在模型上設置事件。Laravel雄辯5.4模型事件

例如:我想做些別的事情更新模型時,或當事情被保存在模型等。

這段代碼在雄辯5.4還工作嗎?我做了一些嘗試,但失敗了。可能這不再適用Eloquent 5.4我需要一個替代方案。

class Something extends Model { 
    public static function boot() { 
     parent::boot(); 
     static::creating(function($item) { 
      $item->uuid = uuid_generate(); 
     }); 
    } 
} 

如果不是,我需要一個不是Laravel方式的解決方案。希望它有可能在模型本身內部捕獲這些事件。

+0

應該可能工作,但首選的方式已經改變。看看這裏的文檔:https://laravel.com/docs/5.4/eloquent#events –

+0

事件將被解僱,但你將需要註冊一個調度員,實際上做這些事件的事情,因爲你不是在Laravel中使用雄辯。 –

+0

上面的代碼不起作用,有沒有辦法做到這一點,並保持簡單?我需要寫這個調度員? –

回答

0
use Illuminate\Database\Capsule\Manager as Capsule; 

$capsule = new Capsule; 

$capsule->addConnection([ 
    'driver' => 'mysql', 
    'host'  => 'localhost', 
    'database' => 'database', 
    'username' => 'root', 
    'password' => 'password', 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
]); 

// Set the event dispatcher used by Eloquent models... (optional) 
use Illuminate\Events\Dispatcher; 
use Illuminate\Container\Container; 
$capsule->setEventDispatcher(new Dispatcher(new Container)); 

// Make this Capsule instance available globally via static methods... (optional) 
$capsule->setAsGlobal(); 

// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher()) 
$capsule->bootEloquent(); 

作曲家,當你需要使用觀察家雄辯的要求「亮/事件」要求。

您需要在這樣的外部項目中設置Eloquent以供事件和觀察者工作。

設置活動:

class Something extends Model { 
    public static function boot() { 
     parent::boot(); 
     static::creating(function($item) { 
      $item->uuid = uuid_generate(); 
     }); 
    } 
} 

class Something extends Model { 
    protected $events = [ 'created' => createdEvent::class] 
} 

檢查文檔的詳細,但兩種方式在洋洋灑灑5.4仍然有效。