0

調査アプリを作成すると、基本的にユーザーが入力タイプ「選択」を選択すると、動的に増加するオプション入力が表示されますが、私のデータベースは、イム私の表に、これらのオプションを挿入するための同期方法をsuginが、私にここで雄弁を使った質問への複数のオプション

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'toufarto.question_id' doesn't exist (SQL: select `option_question_id` from `question_id` where `id` = 11) 

のエラーを与えているが、私のコードです:

Tables: 
questions: 
- id; 
- input_type; 

option_question 
- id; 
- label_option; 
- question_id 

マイコントローラ:

public function store(Request $request) 
     { 

$this->validate($request, array(
      'label_option'    => 'max:255', 
      'input_type'   => 'required|integer' 
     )); 
      $question = new Question(); 
      $question->input_type = $request->input_type; 
      $question->save(); 
      $question->options()->sync($request->option, false); 

      Session::flash('success', 'success'); 

      return back(); 
     } 

私の質問モデル:

public function options() 
    { 

     return $this->belongsToMany(OptionQuestion::class,'question_id','id'); 
    } 

マイOptionQuestionモデル:

class OptionQuestion extends Model 
{ 
    protected $table = "option_question"; 
} 

注:私はからラベルを挿入する必要があるので、私は、「同期」メソッドにラベル列を追加することができますどのようにフォームのオプションフィールド

答えて

0

Laravelのドキュメントに記載されているように、パラメータを次のように定義する必要があります。

あなたのDBの概略図を見ると
$this->belongsToMany(Model,table_name); 

または

$this->belongsToMany(Model, table_name, table_1_key, table_2_key); 

しかし、あなたが小さな調整を行う必要がありそうです。

questions 
- id 
- input_type; 

options 
- id 
- label_option 

option_question 
- id 
- question_id 
- option_id 

質問モデル

public function options() 
{ 
    return $this->belongsToMany(OptionQuestion::class); 
} 

オプションモデル

public function questions() 
{ 
    return $this->belongsToMany(Question::class); 
} 
+0

こんにちは、フィードバックのためのおかげで、私はちょうどモデルでこの変更を行ったが、私は同期メソッドを使用傾けるようで、それが言いますメソッドが利用できない、私はおそらく、オプション機能では、 "hasMany"を使用していると思う – Pedro

+0

私はあなたが本当に同期メソッドを使用したいと考慮して、私のフィードバックを更新しました。これは便利な機能です:-)。 ビジネスロジックが進むまでは、自分自身に質問する必要があります。 多くの質問に同じオプションがあり、多くのオプションに同じ質問があります。 – Frederiek