Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php BadMethodCallException Laravel_Php_Laravel - Fatal编程技术网

Php BadMethodCallException Laravel

Php BadMethodCallException Laravel,php,laravel,Php,Laravel,我有三个表格,分别是民意测验、民意测验问题和民意测验选择。他们的关系是民意测验有许多民意测验问题,民意测验问题有许多民意测验选择。我正在尝试插入,但对于poll_choices(),我得到一个错误BadMethodCallException 投票模式: public function poll_questions() { return $this->hasMany(PollQuestion::class); } 投票问题模型: public function polls() {

我有三个表格,分别是民意测验、民意测验问题和民意测验选择。他们的关系是民意测验有许多民意测验问题,民意测验问题有许多民意测验选择。我正在尝试插入,但对于poll_choices(),我得到一个错误BadMethodCallException

投票模式:

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