Laravel如何将多个复选框的值保存到SQL数据库的不同行中?

时间:2019-04-04 13:23:22

标签: mysql laravel checkbox eloquent laravel-5.8

我的表格如下图所示:
1 我有多个具有 set_name(数字1 2 3 ...)和set_value(0或1)的值。
这是我的数据库表:
2

例如,如果我选中1号和2号和6号,然后单击“保存”按钮。
首先检查是否在数据库的 set_name 中有一个我检查过的名称的值,如果有值(set_name),则更新 set_value其中的值为1 ,否则,如果没有任何set_name和具有该名称的任何行,请创建一个名为Number 1,Number 2和Number 6的行,然后将其set_value设置为1 < br /> 我如何使用laravel进行这项工作?

2 个答案:

答案 0 :(得分:0)

首先,您需要更改表设计,在set_name字段上设置主键或唯一索引。

然后,如果表中没有set_name,则可以使用执行INSERT的SQL;如果表中set_name,则可以使用UPDATE的SQL。 here说明了此作业的SQL:

INSERT INTO t1 (set_name, set_value) VALUES ('$cb_name', '$cb_value')
ON DUPLICATE KEY UPDATE set_name = '$cb_name', 
                        set_value = '$cb_value';

答案 1 :(得分:0)

假设使用以下HTML:

angular
    .module('pessoas', [])

    .config(function ($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'listar.html'
        });
    })

    .controller('CtrlPessoas', function ($scope) {
        $scope.pessoas = [
            {nome: "Maria", cidade: "São Paulo"},
            {nome: "Jose", cidade: " Cacem"},
            {nome: "Dave", cidade: "Sintra"},
            {nome: "Juan", cidade: "Mexico"}
        ];
    });

您可以使用<label> <input type="hidden" name="name[]" value="Number 1" /> <input type="checkbox" name="value[Number 1]" value="1" /> Number 1 </label> 方法:

firstOrCreate

来自the docs

  

firstOrCreate方法将尝试使用给定的列/值对查找数据库记录。如果在数据库中找不到模型,则会插入一条记录,其中包含第一个参数的属性以及可选的第二个参数的属性。