Laravel 5.x Eloquent方法来更新,创建或删除动态输入

时间:2017-03-08 14:37:46

标签: php laravel laravel-5 dynamicform

我有一个动态表单元素(比如书名的名称),用户可以在视图中添加或删除。 创建是一件轻而易举的事,因为当请求到达控制器以保存到数据库时,所有书籍模型都是新的。在更新期间,如果所有图书模型都保持不变,添加了修改后的版本或新图书模型,我可以使用updateOrCreate执行任务,同时满足所有三种情况。

现在的问题是当用户选择在视图中删除书籍时; Laravel尝试保存已删除的模型:

  

SQLSTATE [23000]:完整性约束违规:1048列'column_name'不能为空

是否有updateCreateOrDelete方法或类似方法?我不想删除数据库中的所有书籍并重新创建它们,因为这是懒惰的,如果系统有审计系统,则不建议这样做。

基本上我有一系列可以添加或删除的输入:

  1. 如果有任何更新,那么只需更新他们的数据库条目;
  2. 如果添加n,则创建这些新的n值;
  3. 如果删除m,则从数据库中删除这些m

2 个答案:

答案 0 :(得分:1)

你需要注意你的约束。如果存在依赖于它的东西,Laravel将不会删除您的模型。考虑在迁移中使用级联删除或允许您的依赖项可以为空。

答案 1 :(得分:0)

您收到的错误特别是因为您的列不可为空。

要解决此问题,您需要创建一个新的迁移,并改变您的表格,如下所示:

Schema::table('table', function ($table) {
    $table->string('column_name')->nullable();
});