2017-06-02 55 views
0

我需要保持在數據庫用戶主題店序號明智唯一的,所以不是我要重寫雄辯的創建方法laravel elqouent創建方法不能被overrriden

每次計算應用程序\ Topic.php

public static function create(array $data) 
{ 
    //some logic here 
    parent::create($data); 
} 

但每當我跑通話Topic::create($data)方法,它靜靜地失敗和500 error自帶的瀏覽器沒有laravel拋出異常,當我在鼓搗運行,它會自動獲得一個出口,我無法找到日誌,其中我需要尋找這個問題

這裏有什麼問題?

回答

1

您應該在模型事件中執行此操作,而不是覆蓋方法。它完全符合你的需求。

public static function boot() 
{ 
    parent::boot(); 

    static::creating(function($model) { 
     // make some changes or log or whatever you want 
    }); 
} 

你甚至可以將邏輯移動到自定義的觀察者類。在這裏閱讀更多關於它的信息https://laravel.com/docs/5.4/eloquent#events

+0

我需要在創建之前更改數據,如果這個工作正常,我將創建其他模型要使用的特徵, – ddw147

+0

您計劃執行的所有重寫'create'方法都可以這個。您可以在創建之前更改數據,並且可以使用通用特徵重用事件處理程序。 – Sandeesh

+0

@ ddw147發佈你執行的實際邏輯,我會告訴你如何做到這一點。 – Sandeesh