2017-06-02 26 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