Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays &引用;“数组到字符串的转换”;errorr Laravel-尝试将阵列保存到数据库_Arrays_Database_Laravel_Laravel 5 - Fatal编程技术网

Arrays &引用;“数组到字符串的转换”;errorr Laravel-尝试将阵列保存到数据库

Arrays &引用;“数组到字符串的转换”;errorr Laravel-尝试将阵列保存到数据库,arrays,database,laravel,laravel-5,Arrays,Database,Laravel,Laravel 5,对不起,我是新来的拉威尔和试图保存到数据库的第一次。我正试图将数组保存到数据库中,但出现了“数组到字符串转换”错误。我尝试将迁移文件中的字符串值更改为其他选项,但出现了相同的错误 控制器 public function store(Request $request) { Myroutes::create([ //posting to acc table 'start' => $request->start, 'end' =>

对不起,我是新来的拉威尔和试图保存到数据库的第一次。我正试图将数组保存到数据库中,但出现了“数组到字符串转换”错误。我尝试将迁移文件中的字符串值更改为其他选项,但出现了相同的错误

控制器

    public function store(Request $request)
{   
    Myroutes::create([ //posting to acc table
        'start' => $request->start,
        'end' => $request->end,
        'waypoints' => $request->waypoints
    ]);

    return redirect('/');
}
迁移

 public function up()
{
    Schema::create('myroutes', function (Blueprint $table) {
        $table->increments('myroute_id');
        $table->integer('user_id');
        $table->string('start');
        $table->string('end');
        $table->string('waypoints');
        $table->timestamps();
    });
}
模型

您的Forminput“航路点”是一个数组!

因此,您必须先“转换”它,然后才能进行插入您有一个错误:
'waypoints'=>$request->waypoints
将不起作用,因为
$request->waypoints
是一个数组,并且您无法将数组保存到
VARCHAR()
字段中。如果对输入进行
内爆
处理,并将其转换为逗号分隔的字符串,则应能正常工作:

`'waypoints' => implode(",", $request->waypoints`)

尽管如此,这通常被认为是一个坏主意;考虑使用<代码>路由< /COD>和<代码>路点<代码>作为单独的表,既清晰又易于使用(特别是在检索/编辑中)

表单提交后尝试这样做:

dd($request->all());
然后您将看到将要保存的内容,并将看到航路点是数组。不能将数组另存为字符串,必须将其转换为字符串。变量为数组,因为:

name="waypoints[]"
如果您这样放置,它将不会是数组:

name="waypoints"

只需在类内的模型中使用casting

我在laravel 5.8中使用了这个

$array = $request->names;
$array = implode(',', $array);
$request['names'] = $array;
$distribute = User::create($request->all());

航路点应该是一个阵列吗?你是否需要将其存储为字符串?我想我需要“waypoints[]”才能使google maps waypoints正常工作,现在我已将名称更改为“waypoints”,但只有第一个waypoint提交到数据库。(以上代码仍然相同)谢谢你,成功了!我不能检索航路点并将每个航路点插入到输入字段中吗?你可以这样做,但拉一个字符串、用逗号分隔等是额外的逻辑,而不是能够调用
Route->waypoints
并检索一个漂亮的
Waypoint
模型数组。读一读:;要知道的有用信息。或者将其保存为数据库中的json字段,并将其强制转换为array@Indra当然,只要RDBMS支持,
JSON
列也可以工作。@Timleis检查一下我的新问题,关于如何让它从数据库发布-谢谢!我担心如果没有名称中的方括号,谷歌地图航路点将无法工作。我删除了它,它仍然有效,但现在只有第一个航路点提交到数据库,因为我将其更改回“航路点”=>$request->waypoints。
name="waypoints"
protected $casts = [
        'theme_setting' => 'array'
];
$array = $request->names;
$array = implode(',', $array);
$request['names'] = $array;
$distribute = User::create($request->all());