2016-06-20 12 views
0

存在しませんが:Laravel 5、リクエストメソッドを介して挿入することはできません、私は任意の成功なしでやろうとしている何が

welcome.bladeで、私はいくつかのボードとsubboardsとforeachのを持っている(ランダムで生成されあなたはサブボードをクリックして、この/ subboardOneのようなものに行くことができます。私は私のroutes.phpの上

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

をこれを得た後、フォームを経由して、このサブボード上のスレッドを投稿することができますが、私は本当に彼がどこlaravelが知っているのか分からないので、フォームは次のようなものです:

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

この$ subboardcoll-> idはそれがインデックス機能を経由してコレクションを送信し、コントローラ、から来ている:

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

その後、私は自分のフォームを送信し、スレッドautoinsertiを保存しようとしていますNG subboardIdしかしlaravelはsubboards方法認識しない:

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(); 

    } 

を、私にこのerorr与える:

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

君たちhelpmeはなぜ知っていることはできますか?また、私は何をしようとしているより良いフォームですか? laravel上のイム初心者、感謝

EDIT:

Thread.php

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

Subboard.php

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

答えて

0

方法subboardsはリクエストオブジェクトには存在しません。やって考えてみましょうこの

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

フォームを使用してIDを渡すが、それを実行するときには、私にそのエラー与え、ということでした:\データベース\文法:: columnizeを(照らすために渡さ 引数1)型配列、文字列でなければなりませんが与えられたE:¥laragon¥www¥DeepElite¥vendor¥laravel¥framework¥src¥Illuminate¥Database¥Query¥Grammar¥Grammar.phpで、121行目で呼び出され、 – Sociopath

+0

が定義されています。 findを使うときは$ idだけを渡します。私は正しい使い方を反映するために私の答えを編集しました。 –

+0

スレッド()のように思えます。それは未定義のメソッドなので、なぜ私のモデルでは問題ないのですか? – Sociopath

関連する問題