如何将多个 Child 行数据与 Parent 行一起添加到 Laravel Blade
How to Add Multiple Child Row Data together with Parent Row in Laravel Blade
我一直在尝试通过 blade 添加多个数据。在我的 blade 表单中,我正在使用克隆,添加行。比如一个申请单有很多项目。
我的blade观点
Blade 查看代码
<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);
}
我的商店控制器代码中的问题是它只添加了一项而不是多项。
我的模特:
申请 table = 'id', 'purpose', 'requisition_date', 'requested_by', 'requisition_date'
RequisitionItem table = 'id', 'requisition_id', 'qty', 'unit', 'description'
dd($行) 结果
我认为最简单的方法是像这样使用追加输入和 blade 输入...
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);
我一直在尝试通过 blade 添加多个数据。在我的 blade 表单中,我正在使用克隆,添加行。比如一个申请单有很多项目。
我的blade观点
Blade 查看代码
<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);
}
我的商店控制器代码中的问题是它只添加了一项而不是多项。 我的模特: 申请 table = 'id', 'purpose', 'requisition_date', 'requested_by', 'requisition_date' RequisitionItem table = 'id', 'requisition_id', 'qty', 'unit', 'description'
dd($行) 结果
我认为最简单的方法是像这样使用追加输入和 blade 输入...
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);