web-dev-qa-db-fra.com

Mettre à jour la table en utilisant Laravel Modèle

J'ai une table pour une équipe de sport. L'enregistrement montre la sélection de l'équipe et d'autres informations. Je veux mettre à jour le record avec la sélection de l'équipe. Mon modèle est donc:

class Selection extends Model {

protected $table = "selection";

protected $fillable = [
    'loose',
    'hooker',
    'tight',
    'secrow1',
    'secrow2',
    'blindflank',
    'openflank',
    'eight',
    'scrum',
    'fly',
    'leftwing',
    'rightwing',
    'fullback',
    'sub1',
    'sub2',
    'sub3',
    'sub4',
    'sub5'
];

}

Donc, j'ai un formulaire qui donne toutes les données pour les positions et donne l'ID pour l'enregistrement dans la base de données. Dans mon contrôleur, j'ai:

public function storeFirstTeam()
{
    $input = Request::all();

    Selection::update($input->id,$input);

    return redirect('first-team');
}

Mais j'obtiens l'erreur suivante:

La méthode non statique Illuminate\Database\Eloquent\Model :: update () ne doit pas être appelée de manière statique, en supposant que $ this provient d'un contexte incompatible

Quelqu'un peut-il signaler mon erreur stupide?

5
danjswade

Veuillez vérifier le code ci-dessous et cela résoudrait votre problème:

Selection::whereId($id)->update($request->all());
16
Jilson Thomas

Vous devriez l'écrire comme exemple donné ci-dessous:

Selection::where('id', $input['id'])->update($input);
// Or use this using dynamic where
Selection::whereId($input['id'])->update($input);

Alternativement, vous pouvez aussi écrire comme ceci:

Selection::find($input['id'])->fill($input)->save();
2
The Alpha

Le message d’erreur vous dit tout ce que vous savez: vous essayez d’appeler une méthode de manière statique (en utilisant le double point-virgule) qui n’est pas censée être.

La méthode update() doit être appelée sur un modèle instance , vous devez donc en récupérer un:

$selection = Selection::find($id);

Vous pouvez ensuite utiliser la méthode update() sur ce point:

$selection->update($request->all());
1
Martin Bean