覆盖雄辩的create()方法

时间:2016-06-21 08:38:10

标签: laravel eloquent

我想在创建之前覆盖一个雄辩模型的create()方法来改变某些字段(加密它们)。

所以在我的模型中我声明了一个新方法,我在其中改变了字段:

public static create( array $data)
{
  // for demonstrating purposes I just prepend a string
  $data['fieldName'] = 'xxx'.$data['fieldName'];

  // call the parent' create with the altered data-array
  return parent::create($data)
}

但不知何故,这会导致错误:

  

App \ MyModel :: create()声明应该与Illuminate \ Database \ Eloquent \ Model :: create(array $ attributes = Array)兼容

我错过了什么?

1 个答案:

答案 0 :(得分:2)

方法中的参数有一个默认值,所以它应该是这样的:

public static function create(array $attributes = []) {

但是,不是覆盖方法,你也可以监听创建事件或使用mutator来设置属性值,这比覆盖create方法更好。