我想在创建之前覆盖一个雄辩模型的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)兼容
我错过了什么?
答案 0 :(得分:2)
方法中的参数有一个默认值,所以它应该是这样的:
public static function create(array $attributes = []) {
但是,不是覆盖方法,你也可以监听创建事件或使用mutator来设置属性值,这比覆盖create方法更好。