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?
Veuillez vérifier le code ci-dessous et cela résoudrait votre problème:
Selection::whereId($id)->update($request->all());
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();
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());