Actualizarea tabelului utilizând modelul Laravel (Programare, Laravel, Model, Elocvent)

danjswade a intrebat.

Am un tabel pentru o echipă sportivă. Înregistrarea arată selecția echipei și alte câteva informații. Vreau să actualizez înregistrarea cu selecția echipei. Modelul meu este astfel:

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'
];

}

Deci, am un formular care oferă toate datele pentru poziții și oferă id-ul pentru înregistrarea din BD. În controlerul meu, am:

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

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

    return redirect('first-team');
}

Dar primesc următoarea eroare:

Metoda non-statică IlluminateDatabaseEloquentModel::update() nu ar trebui să fie apelată static, presupunând $this dintr-un context incompatibil.

Poate cineva să-mi indice eroarea stupidă?

Comentarii

  • Trebuie să selectați mai întâi rândul pe care doriți să îl actualizați. Cum ați putea obține id de selecție atunci când postați cererea de actualizare? –  > Por Jilson Thomas.
  • Încercați ceva de genul acesta: Selection::whereId($id)->update($request->except(['_method','_token'])); –  > Por Jilson Thomas.
3 răspunsuri
Jilson Thomas

Vă rugăm să verificați codul de mai jos și acest lucru ar rezolva problema dvs:

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

Comentarii

  • perfect, mai întâi trebuie să punem where(), după care update() –  > Por Zubaer Haque.
  • Are această metodă update() get rollBackdacă ceva nu merge bine? Dacă este între un DB::beginTransaction() –  > Por Jonatan Lavado.
  • Solicitarea poate conține niște câmpuri personalizate, din formular de ex. am pus array-ul așa:Foydabaranda::whereId($request->id_eslox)->update([ 'login' => $request->login_eslox, 'parol' => $request->parol_eslox, 'tuKiTu' => $request->xeli_tochka, ]); De asemenea, funcționează așa cum am vrut. –  > Por CodeToLife.
Martin Bean

Mesajul de eroare îți spune tot ce știi: încerci să apelezi static (folosind două puncte de suspensie) o metodă care nu este menită să fie.

Adresa update() este menită să fie apelată pe un model instanță, , așa că mai întâi trebuie să recuperați una:

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

Apoi puteți utiliza metoda update() pe acesta:

$selection->update($request->all());

Alpha

Ar trebui să o scrieți ca în exemplul de mai jos:

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

Alternativ, puteți să o scrieți și astfel:

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