2016-06-20 5 views
0

Das ist, was ich ohne Erfolg zu tun, ich versuche:Laravel 5, kann nicht über Request-Methode einfügen existiert nicht

In welcome.blade Ich habe eine foreach mit einigen Brettern und subboards (zufällig erzeugt durch Benutzer), wo Sie auf das Subboard klicken und etwas wie/subboardOne gehen können. Ich habe dies auf meinem routes.php

Route::get('/{subboaName}', '[email protected]'); 
Route::post('/{subboaName}', '[email protected]'); 

dann können Sie einen Thread zu diesem Subboard über Form schreiben, aber da ich wirklich nicht wissen, wie Laravel weiß, wo er ist, ist die Form, so etwas wie diese:

<form class="form col-md-12 center-block" role="form" method="POST" action="/{{$subboardcoll->id}}"> 

diese $ subboardcoll-> id kommt von der Steuerung, wo es die Sammlung über die Index-Funktion sendet:

public function index($subboard) 
{ 
    $subboardcoll = Subboard::where('subboaName', $subboard)->first(); 
    $threads = Thread::where('subboaId', $subboardcoll->id) 
      ->orderBy('created_at', 'desc') 
      ->get(); 
    return view('threads.thread', compact('threads', 'subboardcoll')); 
} 

dann versuche ich, meine Form und speichern den Faden autoinserti senden ng der subboardId aber Laravel erkennt nicht subboards Methode:

public function store(Request $request) 
    { 
     $this->validate($request, [ 
      'comentario' => 'required|max:2000', 
      //'g-recaptcha-response' => 'required|recaptcha', 
      //'imagen' => 'required', 
     ]); 

     $request->subboards()->threads()->create([ 
      'thrName' => $request->nombre, 
      'thrComment' => $request->comentario, 
      'thrImg' => $request->imagen, 
      'thrSubject' => $request->tema, 
     ]); 

     return redirect()->back(); 

    } 

Und gibt mir diese erorr:

BadMethodCallException in Macroable.php line 81: Method subboards does not exist. 

Können Sie Kerle helpme wissen, warum? Gibt es auch bessere Form zu tun, was ich versuche? im Neuling auf Laravel dank

EDIT:

thread.php

public function subboard() 
{ 
    return $this->belongsTo(Subboard::class, 'subboaId'); 
} 

Subboard.php

public function thread() 
{ 
    return $this->hasMany(Thread::class); 
} 

Antwort

0

Die Methode subboards existieren nicht in einem Request-Objekt. Betrachten Sie dies tun

public function store($id, Request $request) 
{ 
    $this->validate($request, [ 
     'comentario' => 'required|max:2000', 
     //'g-recaptcha-response' => 'required|recaptcha', 
     //'imagen' => 'required', 
    ]); 

    Subboard::find($id)->threads()->create([ 
     'thrName' => $request->nombre, 
     'thrComment' => $request->comentario, 
     'thrImg' => $request->imagen, 
     'thrSubject' => $request->tema, 
    ]); 

    //Alternative query statement 
    Subboard::where('id', $id)->first()->threads()->create([..... 

    return redirect()->back(); 

} 
+0

täte, eine ID durch die Form durchzulassen, aber bei der Ausführung es mir, dass Fehler gibt: Argument 1 übergeben \ Database \ Grammatik :: columnize() ausleuchten muss, string des Typs Array sein gegeben, in E: \ Laragon \ www \ DeepElite \ Hersteller \ Laravel \ Framework \ src \ Illuminate \ Datenbank \ Query \ Grammars \ Grammar.php in Zeile 121 aufgerufen und – Sociopath

+0

Entschuldigung, dass die falsche Referenz gemacht. Wenn Sie find verwenden, übergeben Sie nur die ID $. Ich habe meine Antwort bearbeitet, um die korrekte Verwendung widerzuspiegeln. –

+0

Scheint wie threads() es ist eine undefinierte Methode, weiß nicht warum, weil auf meinen Modellen alles in Ordnung ist, Edditing meine Frage – Sociopath