数组作为字符串保存到数据库,现在需要将字符串发布到数据库的单独输入字段 - Laravel

时间:2018-04-26 14:09:59

标签: arrays database laravel google-maps google-maps-api-3

所以这是一个非常复杂的问题。继我上一期的问题后,该问题显示了我如何将数组保存到数据库中。 "Array to string conversion" errorr Laravel - Trying to save array to database - 我可能需要更改保存到数据库的方式才能使其正确显示。

我在laravel中使用google maps api,用户可以在其中创建路径,将其保存(到数据库),当他们登录时可以再次查看并编辑或删除。

航点功能有效,所以点击+按钮会出现更多输入字段 - 这是用户添加它们的方式。

航路点在shows.blade

中起作用
            var counter = 1;
            var limit = 10;
            var i = 0;
            function addInput(divName) {
              if (counter == limit) {
                alert("You have reached the limit of adding " + counter + " additional destinations");
              } else {
                var newbr = document.createElement('br');
                var newinput = document.createElement("input");
                newinput.setAttribute("name","waypoints");
                newinput.setAttribute("autocompute","on");
                newinput.setAttribute("type", "text");
                newinput.setAttribute("class", "form-control");

                // newin = (counter + 1) + "<input type=text name=waypoints autocomplete=on>";
                document.getElementById(divName).appendChild(newbr);
                document.getElementById(divName).appendChild(newinput);
                counter++;
                i++;
                console.log("cntr=" + counter + " i=" + i + " waypoints.length=" +document.getElementsByName("waypoints"));
                // var inputw = waypoints[i];
                var autocompletew = new google.maps.places.Autocomplete(newinput);
                autocompletew.setComponentRestrictions({'country':['uk','irl']});

              }
            }

它保存到数据库,如myroutescontroller.php

所示
public function store(Request $request)
{   
    if (Auth::check()) {

        Myroutes::create([ //posting to acc table
            'user_id' => Auth::user()->id,
            'start' => $request->start,
            'end' => $request->end,
            'waypoints' => $request->waypoints
        ]);
        return redirect('/');
    } else {
        return redirect('/login');
    }   

}

并在show.blade中显示数据库

                <div id="dynamicInput" class="form-group">
                    <label>Additional Destinations</label>
                    <input type="text" name="waypoints" class="form-control" autocomplete="on" value="{{ $myroute->waypoints }}">
                </div>

                <input type="button" class="btn btn-secondary" value="+" onClick="addInput('dynamicInput');" style="padding:0 10px;">

由于航点在数据库中保存为字符串,如果航线有多个航点,则其列在一个输入字段中,如下图所示。 showing from database

它应该如下所示(这是用户创建并添加到数据库的路径)。 adding to database

我非常感谢任何想法和帮助,因为我知道它非常复杂,谢谢!

1 个答案:

答案 0 :(得分:0)

将数组保存为包含json_encode($array)的字符串,然后将其检索为json_decode($array)