我想使用复选框一次删除多条记录。我的代码无效。
我的HTML
@foreach($userallergens as $aller)
<input type="hidden" name="ua_id" value="{{$aller->ua_id}}">
<input type="checkbox" class="allergies" name="allergen[]" value="{{$aller->ua_id}}">
{{ $aller->allergen_name}}</label>
<label>Tolerance Level:<b>{{$aller->tolerance_level}}</b></label><br>
@endforeach
我的控制器
public function destroy(Request $request){
$id=Auth::user()->id;
$uaid=UserAllergen::where('ua_id', $request['ua_id'])->get();
if (is_array($id))
{
UserAllergen::destroy($uaid);
}
else
{
UserAllergen::where('ua_id', $uaid)->delete();
}
return redirect()->route('user.profile', compact('user', 'id'));
}
答案 0 :(得分:1)
ua_id应该是ua_id []所以表单将其作为一个数组发布,你是否适合过敏原
首先出现一些错误:
$id=Auth::user()->id;
和
if (is_array($id))
由于用户ID始终是非数组值
,因此永远不会起作用然后您需要对代码进行一些更改
同时更改此
UserAllergen::where('ua_id', $uaid)->delete();
到此
UserAllergen::whereIn('ua_id', $uaid)->delete();
除非ua_id是你的主键,否则我会避免使用destroy,因为它基于表主键(通常是id),你可以改为使用
UserAllergen::where('ua_id', $uaid)->delete();
但是,如果它是你的表的PK,你可以在数组的情况下使用destroy以及将你的代码简化为
public function destroy(Request $request){
$uaid = $request->get('ua_id'); // array
UserAllergen::destroy($uaid);
return redirect()->route('user.profile', compact('user', 'id'));
}
或
public function destroy(Request $request){
$uaid = $request->get('ua_id'); // array
UserAllergen::whereIn('ua_id', $uaid)->delete();
return redirect()->route('user.profile', compact('user', 'id'));
}
答案 1 :(得分:1)
在Laravel 5.8中删除多行(记录):
$rowIds = "1,3,5";
$Rowsdeleted = explode(",", $rowIds);
foreach($Rowsdeleted as $rowId) {
$response = YourModelName::where('id',"=",$rowId)->delete();
}
答案 2 :(得分:0)
在控制器中使用
public function destroy(Request $request){
$uaid = $request->get('ua_id'); // array
UserAllergen::whereIn('ua_id', $uaid)->delete();
return redirect()->route('user.profile', compact('user', 'id'));
}
当你带有那个id的数组时