我有一个产品的复选框列表,我想删除所有数据,也可以使用复选框从其他表中的外键中删除。
以下是我所拥有的内容,我从我的表中创建了一个表单,该表单被路由以删除从复选框中检查的数据。
<form action="{{ route('admin.delproducts') }}" method="get" id="delprod">
{{ csrf_field() }}
<table class="table table-hover">
<thead>
<tr>
<th width="4%"></th>
<th width="17%">SUB-CATEGORY</th>
<th width="30%">PRODUCT NAME</th>
<th width="10%">QTY</th>
<th width="10%">STATUS</th>
<th width="25%">UPDATED</th>
</tr>
</thead>
<tbody>
@foreach($products as $key => $data)
<tr>
<td><input type="checkbox" name="products[]" value="{{ $data->product_id }}" /> </td>
<td><a href="#"> {{ $data->name }} </a></td>
<td><a href="#"> {{ $data->product_name }} </a></td>
<td><a href="#"> {{ $data->quantity }} </a></td>
<td><a href="#"> {{ $data->status }} </a></td>
<td>{{ $data->updated_at }}</td>
</tr>
@endforeach
</tbody>
</table>
</form>
<p data-placement="top" data-toggle="tooltip" title="Delete"><button class="btn btn-danger btn-sm pull-right delbtn" data-title="Delete" data-toggle="modal" data-target="#delete" ><span class="glyphicon glyphicon-trash"></span></button></p>
我已经在表单外面制作了我的按钮,但我已经为它创建了一个javascript。
$(".delbtn").click( function() {
$('#delprod').submit();
});
在我的控制器中这就是我所做的:
public function deleteProducts(Request $request) {
Product::destroy($request->products);
return redirect()->route('admin.product');
}
我收到错误,因为此Product表有一个表Product_image
中的外键我怎样才能让控制器删除Product_image
表中product_id
的所有数据被选中复选框?
我尝试制作模型Product_image
并在我的控制器中尝试了这个
Product_image::destroy($request->products);
但是它给了我错误,因为它说它确实存在。在进行查询以删除复选框传递的外键时有任何建议吗? 。类似于从复选框中删除接受数组的查询。?
答案 0 :(得分:0)
如果您在产品图片之间有关系,则可以执行此操作。 (我假设您的关系名称为state
。Laravel destroy 函数不会删除关系。如果您没有定义productImage
如果要删除关系,则需要在迁移文件或数据库中直接定义onDelete。
onDelete('cascade')
之后你可以尝试使用destroy(不确定它是否会删除关系)如果不是那么你可以这样做
$table
->foreign('product_id')
->references('id')
->on('product_image')
->onDelete('cascade');
如果没有关系,则需要手动删除关系数据。