Sql 无法删除子级存在Laravel CRUD的父级
这是当我尝试删除父类别下产品的类别条目时引发的错误:Sql 无法删除子级存在Laravel CRUD的父级,sql,laravel,crud,Sql,Laravel,Crud,这是当我尝试删除父类别下产品的类别条目时引发的错误: Illuminate \ Database \ QueryException SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`store`.`products`, CONSTRAINT `products_category_id
Illuminate \ Database \ QueryException
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`store`.`products`, CONSTRAINT `products_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)) (SQL: delete from `categories` where `id` = 1)
在我做了一些研究之后,我知道你不能删除一个有孩子的父母
当我删除类别id时,我不确定如何加入具有我的类别id的产品。这样,我可以删除具有关联类别id的所有产品
以下是我的删除功能:
public function postDestroy() {
$category = Category::find(Input::get('id'));
if ($category) {
$category->delete();
return Redirect::to('admin/categories/index')
->with('message', 'Category Deleted');
}
return Redirect::to('admin/categories/index')
->with('message', 'Something went wrong, please try again');
}
如果您想删除任何具有相同类别的产品,我将更改您的category类,该类扩展为以下内容:
class Category extends Eloquent
{
// ... all your existing code...
public function delete()
{
// Delete all of the products that have the same ids...
Products::where("category_id", $this->id)->delete();
// Finally, delete this category...
return parent::delete();
}
}
现在调用$category->delete()将删除所有具有相同category\u id的产品以及该类别本身。如果要删除具有相同类别的任何产品,我将更改您的category类,该类将扩展为以下内容:
class Category extends Eloquent
{
// ... all your existing code...
public function delete()
{
// Delete all of the products that have the same ids...
Products::where("category_id", $this->id)->delete();
// Finally, delete this category...
return parent::delete();
}
}
现在调用$category->delete()将删除所有具有相同category\u id的产品以及该类别本身。如果要删除具有相同类别的任何产品,我将更改您的category类,该类将扩展为以下内容:
class Category extends Eloquent
{
// ... all your existing code...
public function delete()
{
// Delete all of the products that have the same ids...
Products::where("category_id", $this->id)->delete();
// Finally, delete this category...
return parent::delete();
}
}
现在调用$category->delete()将删除所有具有相同category\u id的产品以及该类别本身。如果要删除具有相同类别的任何产品,我将更改您的category类,该类将扩展为以下内容:
class Category extends Eloquent
{
// ... all your existing code...
public function delete()
{
// Delete all of the products that have the same ids...
Products::where("category_id", $this->id)->delete();
// Finally, delete this category...
return parent::delete();
}
}
现在调用$category->delete()将删除所有具有相同category\u id的产品,以及该类别本身。可能重复@Ambrish。。。不是真的,这是一个关于Laravel的问题,虽然这是一个相关的问题,但它不是问为什么查询失败,而是如何修复“Laravel风格”可能重复的@Ambrish。。。不是真的,这是一个关于Laravel的问题,虽然这是一个相关的问题,但它不是问为什么查询失败,而是如何修复“Laravel风格”可能重复的@Ambrish。。。不是真的,这是一个关于Laravel的问题,虽然这是一个相关的问题,但它不是问为什么查询失败,而是如何修复“Laravel风格”可能重复的@Ambrish。。。不是真的,这是一个关于Laravel的问题,虽然这是一个相关的问题,但它不是问为什么查询失败,而是问如何修复它“Laravel风格”,谢谢@timgws。是我原来的控制器。是更新后的控制器,我在其中添加了您建议的内容,但仍然会出现错误。如果我将extends Basecontroller更改为Eloquent,则会出现错误。是的,因为您正在编辑控制器。您不需要编辑控制器,只需编辑模型即可。在
app/models
中更改类别模型(该模型应扩展为Eloquent)。这样,您就可以保持$category->delete
和控制器的其余部分不变。将来,当您删除一个类别时,它将删除与其关联的产品!我还有一个问题要发布,那就是在创建产品的同一页面上更新产品。如果我想不出答案,我会回到这篇文章,如果你不介意的话,我会把问题链接发上去。谢谢@timgws。是我原来的控制器。是更新后的控制器,我在其中添加了您建议的内容,但仍然会出现错误。如果我将extends Basecontroller更改为Eloquent,则会出现错误。是的,因为您正在编辑控制器。您不需要编辑控制器,只需编辑模型即可。在app/models
中更改类别模型(该模型应扩展为Eloquent)。这样,您就可以保持$category->delete
和控制器的其余部分不变。将来,当您删除一个类别时,它将删除与其关联的产品!我还有一个问题要发布,那就是在创建产品的同一页面上更新产品。如果我想不出答案,我会回到这篇文章,如果你不介意的话,我会把问题链接发上去。谢谢@timgws。是我原来的控制器。是更新后的控制器,我在其中添加了您建议的内容,但仍然会出现错误。如果我将extends Basecontroller更改为Eloquent,则会出现错误。是的,因为您正在编辑控制器。您不需要编辑控制器,只需编辑模型即可。在app/models
中更改类别模型(该模型应扩展为Eloquent)。这样,您就可以保持$category->delete
和控制器的其余部分不变。将来,当您删除一个类别时,它将删除与其关联的产品!我还有一个问题要发布,那就是在创建产品的同一页面上更新产品。如果我想不出答案,我会回到这篇文章,如果你不介意的话,我会把问题链接发上去。谢谢@timgws。是我原来的控制器。是更新后的控制器,我在其中添加了您建议的内容,但仍然会出现错误。如果我将extends Basecontroller更改为Eloquent,则会出现错误。是的,因为您正在编辑控制器。您不需要编辑控制器,只需编辑模型即可。在app/models
中更改类别模型(该模型应扩展为Eloquent)。这样,您就可以保持$category->delete
和控制器的其余部分不变。将来,当您删除一个类别时,它将删除与其关联的产品!我还有一个问题要发布,那就是在创建产品的同一页面上更新产品。如果我想不出答案,我会回到这篇文章,如果你不介意的话,我会发布问题链接。