使用雄辩的问题的多个选项

时间:2017-02-14 20:10:38

标签: laravel laravel-5 laravel-5.2 laravel-5.3 laravel-eloquent

我正在创建一个调查应用程序,基本上当用户选择输入类型“选择”时,它会显示一个可以动态增加的选项输入,但是我在我的数据库中插入这些选项时遇到了一些问题,我知道了同步方法在我的表中插入这些选项,但是给我一个错误

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";
}

注意:我如何将标签列添加到“sync”方法,因为我需要从表单的选项字段插入标签

1 个答案:

答案 0 :(得分:0)

如Laravel文档中所述,您需要按如下方式定义参数:

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