
我这样写是错的,应该如何改正?del语句查询的内容是我想要的 不知道应该怎么在laravel中执行这条语句
关注引自免费微信小程序:皆我百晓生
在Laravel中执行原生SQL语句,可以利用Laravel的DB门面。你尝试执行的删除操作可以通过以下方式正确实现:
首先,确保从请求中获取的$ids是一个包含多个ID的数组。然后,使用implode()函数将这个数组转换为一个字符串,其中ID由逗号分隔。接下来,利用Laravel的DB门面执行原生SQL删除语句。
下面是修改后的代码示例:
public function plscgoods(Request $request) {
// 获取请求中的ID数组
$ids = $request->input('id', []);
// 检查ID数组是否非空
if (!empty($ids)) {
// 将ID数组转换为逗号分隔的字符串
$idsString = implode(',', array_map('intval', $ids));
// 使用Laravel的DB门面执行原生SQL删除语句
$deleted = DB::delete("DELETE FROM tb_goods_copy1 WHERE goodsid IN ({$idsString})");
// 输出成功信息并重定向
echo "<script>alert('删除成功!'); location.href='/fenye'</script>";
} else {
// 如果没有ID,则提示错误
echo "<script>alert('请选择要删除的项!'); history.back()</script>";
}
}
这里的关键点在于:
$request->input()方法安全地从请求中获取数据。array_map('intval', $ids)确保所有ID都是整数,避免SQL注入风险。DB::delete()方法执行原生SQL删除语句,注意SQL语句中的占位符应被实际值替换,而不是字符串拼接。这样修改后,你的代码应该能正确执行原生SQL删除操作,并在成功后显示提示信息并重定向到指定页面。