【问题标题】:How to Add Multiple Child Row Data together with Parent Row in Laravel Blade如何在 Laravel Blade 中添加多个子行数据和父行
【发布时间】:2020-02-03 02:26:27
【问题描述】:

我一直在尝试通过刀片添加多个数据。在我的刀片形式中,我正在使用克隆,添加行。例如,一份申请有许多项目。

我的刀片视图

刀片视图代码

<form autocomplete="off" method="POST" action="{{ route("requisition.store") }}" enctype="multipart/form-data">
        @csrf
        <div class="form-group">
            <label class="required" for="purpose">Purpose</label>
            <input class="form-control" type="text" name="purpose" id="purpose" required>
            <span class="help-block"></span>
        </div>

        <div class="form-group">
            <label class="required" for="requisition_date">Date</label>
            <input class="form-control" type="date" name="requisition_date" id="requisition_date" required>
            <span class="help-block"></span>
        </div>

        <div class="form-group">
            <label class="required" for="requested_by">Released By</label>
            <input class="form-control" type="text" name="requested_by" id="requested_by" required>
            <span class="help-block"></span>
        </div>

        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>Qty</th>    
                    <th>Unit</th>    
                    <th>Description</th>   
                    <th>
                        <a href="#" class="addRow"><i class="fas fa-plus"></i></a>    
                    </th> 
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>
                        <input type="number" name="rows[0][qty]" class="form-control quantity" required>  
                    </td>    
                    <td>
                        <input type="text" name="rows[0][unit]" class="form-control" required>  
                    </td>    
                    <td>
                        <input type="text" name="rows[0][description]" class="form-control" required>  
                    </td> 
                    <td>

                    </td>   
                </tr> 
            </tbody>    
        </table>



        <div class="form-group">
            <button class="btn btn-danger" type="submit">
                Save
            </button>
        </div>
    </form>

用于克隆的脚本代码

function addRow()
{
    var tr = '<tr>'+
    '<td><input type="number" name="rows[0][qty]" class="form-control quantity"></td>'+
    '<td><input type="text" name="rows[0][unit]" class="form-control quantity"></td>'+
    '<td><input type="text" name="rows[0][description]" class="form-control quantity"></td>'+
    '<td><a class="btn btn-danger remove"><i class="fas fa-times"></i></a></td>'+
    '</tr>';
    $('tbody').append(tr);
  }

还有我的商店控制器代码

public function store(Request $request)
{
   $requisition = Requisition::create([
            'purpose' => $request->input('purpose'),
            'requisition_date' => $request->input('requisition_date'),
            'requested_by' => $request->input('requested_by')
        ]);  

        $rows = $request->input('rows');

        foreach ($rows as $row)
        {
            $items[] = [
                'requisition_id' => $requisition->id,
                'qty' => $row['qty'],
                'unit' => $row['unit'],
                'description' => $row['description']
            ];
        }

        RequisitionItem::insert($items);

}

我的商店控制器代码中的问题是它只添加一项而不是多于一项。 我的模型: 申请表 = 'id', '目的', 'requisition_date', 'requested_by', 'requisition_date' RequisitionItem table = 'id', 'requisition_id', 'qty', 'unit', 'description'

dd($rows) 结果

【问题讨论】:

  • dd($rows) 并发布。
  • 我贴出 dd($rows) 的结果
  • 你调用了 $request->input('rows');但我在您的 HTML 中看不到任何输入名称为“行”
  • @BossPogs 你的 $rows 只有一行,请检查你的 js 代码,它真的添加了更多的请求行吗?
  • 我编辑我的问题并显示我的 js 代码,如果我这样做是为了克隆。我只是想看看它是否正确

标签: php laravel-6


【解决方案1】:

我认为最简单的方法是像这样使用附加输入和刀片输入...

name="qty[]"

代替

name="rows[0][qty]"

并且在控制器中循环通过一个将始终添加的字段。例如;

for($i = 0; $i < sizeof($request->qty); $i++)
    {
        RequisitionItem::insert([
            'requisition_id' => $requisition->id,
            'qty' => $request->qty[$i],
            'unit' => $request->unit[$i],
            'description' => $request->description[$i]
        ]);
    }

您也可以按照此程序进行操作,

  for($i = 0; $i < sizeof($request->qty); $i++)
    {
        $items[] = [
            'requisition_id' => $requisition->id,
            'qty' => $request->qty[$i],
            'unit' => $request->unit[$i],
            'description' => $request->description[$i]
        ];
    }

  RequisitionItem::insert($items);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2018-11-15
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多