Php BadMethodCallException Laravel
我有三个表格,分别是民意测验、民意测验问题和民意测验选择。他们的关系是民意测验有许多民意测验问题,民意测验问题有许多民意测验选择。我正在尝试插入,但对于poll_choices(),我得到一个错误BadMethodCallException 投票模式:Php BadMethodCallException Laravel,php,laravel,Php,Laravel,我有三个表格,分别是民意测验、民意测验问题和民意测验选择。他们的关系是民意测验有许多民意测验问题,民意测验问题有许多民意测验选择。我正在尝试插入,但对于poll_choices(),我得到一个错误BadMethodCallException 投票模式: public function poll_questions() { return $this->hasMany(PollQuestion::class); } 投票问题模型: public function polls() {
public function poll_questions() {
return $this->hasMany(PollQuestion::class);
}
投票问题模型:
public function polls() {
return $this->belongsTo(Poll::class, 'poll_id');
}
public function poll_choices() {
return $this->hasMany(PollChoice::class);
}
投票选择模型:
public function poll_questions() {
return $this->belongsTo(PollQuestion::class, 'poll_question_id');
}
这是我的控制器:
public function store(Request $request) {
$rules = [
'title' => 'required',
'questions' => 'required|poll_questions',
];
$this->validate($request, $rules);
$newPoll = Poll::create(request()->all());
$questions = $request->input('questions');
for ($i = 0; $i < count($questions); $i++) {
$poll_question = new PollQuestion();
$poll_question->input_type = $questions[$i]["input_type"];
$poll_question->question = $questions[$i]["question"];
$newPoll->poll_questions()->save($poll_question);
if ($questions[$i]["input_type"] === '0') {
for ($j = 0; $j < count($questions[$i]["choices"]); $j++) {
$poll_choices = new PollChoice();
$poll_choices->choice = $questions[$i]["choices"][$j];
$newPoll->poll_questions()->poll_choices()->save($poll_choices);
}
}
}
return $this->showOne($newPoll);
}
公共函数存储(请求$Request){
$rules=[
“标题”=>“必需”,
“问题”=>“必需的|调查问题”,
];
$this->validate($request,$rules);
$newPoll=Poll::create(request()->all());
$questions=$request->input('questions');
对于($i=0;$iinput\u type=$questions[$i][“input\u type”];
$poll_question->question=$questions[$i][“question”];
$newPoll->poll\u questions()->保存($poll\u questions);
如果($questions[$i][“input_type”]='0'){
对于($j=0;$jchoice=$questions[$i][“choices”][$j];
$newPoll->poll\u questions()->poll\u choices()->save($poll\u choices);
}
}
}
返回$this->showOne($newPoll);
}
这一行出现错误:$newPoll->poll\u questions()->poll\u choices()->save($poll\u choices)代码>
此外,我还尝试了:$newPoll->poll\u questions->poll\u choices()->save($poll\u choices)代码>
我可以添加poll和poll\u完美问题。但当我尝试添加投票选择时,它给出了一个错误。我无法访问poll_questions的poll_选项方法
我如何解决这个问题
拉威尔5.4
完整错误日志:
对未定义方法的BadMethodCallException调用
照亮\Database\Query\Builder::poll\u选项()
您已经保存了投票问题,并在执行以下操作时将其与投票关联:
$newPoll->poll_questions()->save($poll_question);
因此,剩下的就是将选择保存到问题中,您不再需要参与家长投票。因此,在你的问题循环中,用这个代替你所拥有的:
$poll_question->poll_choices()->save($poll_choices);