【问题标题】:How to insert array field in laravel如何在laravel中插入数组字段
【发布时间】:2019-01-14 15:18:30
【问题描述】:

这是我的第二个话题

所以我正在尝试使用输入标签插入数组数据。 我正在使用 jquery 进行标签输入

<input type="button" class="btn btn-primary" onclick="steps(); return false;" value="Add  steps">

function steps() {
    var idf = document.getElementById("idf").value;
    var stre;
    stre="<p id='srow" + idf + "'><input type='text' class='haha{{ $errors->has('steps') ? ' is-invalid' : '' }}' name='steps[]' id='steps' /> <a href='#' style=\"color:#3399FD;\" onclick='hapusElemen(\"#srow" + idf + "\"); return false;'>Hapus</a></p>";
    $("#divHobi").append(stre);
    idf = (idf-1) + 2;
    document.getElementById("idf").value = idf;
}
function hapusElemen(idf) {
    $(idf).remove();
}

在使用 dd() 输入数据后也是这个结果

array:3 [0 => "banget" 
         1 => "asd"
         2 => "wwww"
]

在这种情况下,我正在尝试将该数组输入到数据库并且可以工作

这是代码

$hitung = $req->steps;
    $hitung2 = count($hitung);
    dd($hitung);

    for ($i=0; $i < $hitung2; $i++) { 
        $user = new TestCase;

        $user->id_test_case = $req->id_test_case;
        $user->id_document = $req->id_document;
        $user->test_scenario = $req->test_scenario;
        $user->post_condition = $req->post_condition;
        $user->pre_condition = $req->pre_condition;
        $user->expected_result = $req->expected_result;
        $user->steps = $req->steps[$i];
        $user->actual_result = $req->actual_result;
        $user->status = $req->status;
        $user->save();

    }

但结果是这样的

然后我希望的预期结果是这样的

那有可能吗?没有循环?

【问题讨论】:

  • 改为使用$user-&gt;steps = $req-&gt;steps;。此外,请务必将 steps 转换为模型类中的数组。而且你不需要循环。
  • 你是这个意思吗?在我的模型中受保护的 $fillable ?
  • 不,那是另一回事(在您的情况下可能有用,但这是另一个主题)。我的意思是铸造laravel.com/docs/5.6/eloquent-mutators#array-and-json-casting
  • 哇,我上新课了。谢谢:D。

标签: javascript laravel loops laravel-5


【解决方案1】:

您正在每个循环中创建一个新的TestCase;所以当然你最终会在你的表中得到 3 行。摆脱循环,使用implode()steps 设置为字符串:

$user = new TestCase;

$user->id_test_case = $req->id_test_case;
$user->id_document = $req->id_document;
$user->test_scenario = $req->test_scenario;
$user->post_condition = $req->post_condition;
$user->pre_condition = $req->pre_condition;
$user->expected_result = $req->expected_result;
$user->steps = implode(",", $req->steps);
$user->actual_result = $req->actual_result;
$user->status = $req->status;

$user->save();

现在将数组作为CSV 值保存到数据库中不一定是最好的方法,因此请注意,您可能会遇到基于该决定的限制。考虑使用枢轴方法(usersstepsusers_steps)或类似方法。

【讨论】:

  • 哇,感谢这个工作很好,我什至没有想到使用内爆,不管这个工作,非常感谢。我也会记住你的建议:D
  • 没问题;是的,数据库中的数组使用只是需要注意的事情。就像我说的,它可能会也可能不会导致问题,但这取决于您想对steps 列做什么。干杯!
  • :D 我希望你能得到回报。谢谢:D
猜你喜欢
  • 2018-12-20
  • 2019-07-18
  • 2016-08-27
  • 1970-01-01
  • 2020-04-08
  • 2018-03-20
  • 2016-07-22
  • 2015-11-06
  • 2021-07-25
相关资源
最近更新 更多