2016-06-21 8 views
1

Ich möchte die create() Methode eines eloquent-Modells zu ändern, einige Felder vor der Erstellung zu ändern (verschlüsseln).Überschreiben eloquent create() Methode

Also in meinem Modell erkläre ich ein neues Verfahren, bei dem ändere ich die Felder:

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) 
} 

Aber irgendwie führt dies zu einem Fehler:

Declaration of App\MyModel::create() should be compatible with Illuminate\Database\Eloquent\Model::create(array $attributes = Array)

Was bin ich?

Antwort

2

Der Parameter in der Methode hat einen Standardwert, so dass es so sein sollte:

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

Aber statt Überschreiben der Methode, die Sie auch für ein erstellen Ereignis hören könnte oder einen Mutator verwenden zu setzen der Attributwert und es wäre besser, als die create-Methode zu überschreiben.

+0

OMG Laravel hat bereits das, was ich als Standard gebacken haben will ... Mutators/Accessors ist es. Vielen Dank. – stUrb

Verwandte Themen