如何将此查询保存到控制器和模型到我的数据库

时间:2017-05-11 18:58:03

标签: php mysql laravel

如何将此查询保存到我的数据库?该查询连续有10个文本框,但我无法将其保存到数据库中。也许我的控制器错了。

这是我的create.blade.php

<script type="text/javascript">

             $(document).ready(function(){
            var x =0;  
             $(".add-row").click(function(){
             x++;
                $("table > tbody").append('<input class="form-control" type="text" name="MFI" placeholder="Major Final Output" id="MFI" value="Participate in school activities">'); 

                }); //add input box


           }); 

              $(document).on('click', '.delete-row', function(){
                  alert("ROWS DELETED! ")
                  $(this).parent().parent().remove();

我的notescontroller.php

public function store(Request $request)
{

    $inputData= $request->all();

    Note::create($inputData);

    $ipcrId=$request->ipcr_id;

    return redirect()->route('ipcr.show', compact('ipcrId')); 

}

我的note.php(模特)

protected $fillable=['MFI','successIndicator','actualaccomplishments','distribution','Q1','E2','T3','   A4','Ave','Remarks','ipcr_id'];

public function ipcr()
{
    return $this->belongsTo(ipcr::class);
}

1 个答案:

答案 0 :(得分:0)

这里的主要问题是,对于多行,您需要将输入命名为数组:

<input type="text" name="mfi[]">

然后在你的控制器中你可以这样做:

public function store(Request $request) {

    $ipcr = Ipcr::find($request->ipcr_id);

    foreach ($request->mfi as $key => $value) {

        $ipcr->notes()->create([

            'mfi' => $request->mfi[$key]
            // repeat for other fields

        ]);

    }

    return redirect()->route('ipcr.show', compact('ipcrId'));

}

(只要你的Ipcr模型中有反比关系):

public function notes() 
{
    return $this->hasMany(Note::class);
}

有更清洁的方法来完成这项工作,但我认为这应该有效。我建议在控制器中大量使用dd($request),直到您了解$ request中的表单数据,并且您可能还需要一些验证。祝你好运。