重写创建雄辩的模型


overriding create eloquent model

我想获得数据库中最后插入行的id,因此我在模型中创建了一个静态字段:

    public static $lastid;

,我尝试重写create方法:

public static function create($data){
    parent::create($data);
    $lastid = DB::getPdo()->lastInsertId();
}

现在我有一个错误异常说:

Declaration of Actor::create() should be compatible with Illuminate'Database'Eloquent'Model::create(array $attributes)

我怎样才能使它工作?

这里,如果数据不是数组,则$data之前的关键字array将打印致命错误。就像错误中所说的那样,您的类扩展了Illuminate'Database'Eloquent'Model,并且应该与其父类兼容。

public static function create(array $data = array()){
    parent::create($data);
    $lastid = DB::getPdo()->lastInsertId();
}

当您使用Model::create方法时,您可以直接从结果中获取ID。

$actor = Actor::create(array('name' => 'Jason'));
dd($actor->id);

您不需要使用来自PDO对象的lastInsertId方法