我有一个动态表单元素(比如书名的名称),用户可以在视图中添加或删除。 创建是一件轻而易举的事,因为当请求到达控制器以保存到数据库时,所有书籍模型都是新的。在更新期间,如果所有图书模型都保持不变,添加了修改后的版本或新图书模型,我可以使用updateOrCreate
执行任务,同时满足所有三种情况。
现在的问题是当用户选择在视图中删除书籍时; Laravel尝试保存已删除的模型:
SQLSTATE [23000]:完整性约束违规:1048列'column_name'不能为空
是否有updateCreateOrDelete
方法或类似方法?我不想删除数据库中的所有书籍并重新创建它们,因为这是懒惰的,如果系统有审计系统,则不建议这样做。
基本上我有一系列可以添加或删除的输入:
n
,则创建这些新的n
值; m
,则从数据库中删除这些m
值答案 0 :(得分:1)
你需要注意你的约束。如果存在依赖于它的东西,Laravel将不会删除您的模型。考虑在迁移中使用级联删除或允许您的依赖项可以为空。
答案 1 :(得分:0)
您收到的错误特别是因为您的列不可为空。
要解决此问题,您需要创建一个新的迁移,并改变您的表格,如下所示:
Schema::table('table', function ($table) {
$table->string('column_name')->nullable();
});