"数组到字符串转换"错误Laravel - 尝试将数组保存到数据库

时间:2018-04-23 16:23:12

标签: arrays database laravel laravel-5

抱歉,我是Laravel的新手并且第一次尝试保存到数据库。我试图将数组保存到数据库,但错误"数组到字符串转换"正在出现。我尝试将迁移文件中的字符串值更改为其他选项,但出现了同样的错误。

控制器

    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();
    });
}

模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Myroutes extends Model
{
    protected $fillable = [
        'user_id',
        'start',
        'end',
        'waypoints'
    ];
}

查看

<div id="dynamicInput" class="form-group">
                    <label>Additional Destinations</label>
                    <input type="text" name="waypoints[]" class="form-control" autocomplete="on">
                </div>

数据库表

database-img

5 个答案:

答案 0 :(得分:0)

你的Forminput“waypoints”是一个阵列! 因此,在进行插入之前,您必须先“转换”它

答案 1 :(得分:0)

您遇到错误:'waypoints' => $request->waypoints无效,因为$request->waypoints是一个数组,您无法将数组保存到VARCHAR()字段中。如果你implode输入,并将其转换为以逗号分隔的字符串,它应该可以正常工作:

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

话虽如此,这通常被认为是一个坏主意;考虑使用RoutesWaypoints之间的关系作为单独的表格,以便清晰易用(特别是在检索/编辑时)。

答案 2 :(得分:0)

表单提交后尝试执行此操作:

dd($request->all());

然后您将看到将保存的内容并将看到waypoints是数组。您不能将数组保存为字符串,您必须将其转换为字符串。变量是数组,因为:

name="waypoints[]"

如果你这样说就不会是数组:

name="waypoints"

答案 3 :(得分:0)

protected $casts = [
        'theme_setting' => 'array'
];

只需在类中的模型中使用强制转换

答案 4 :(得分:0)

我将其用于laravel 5.8

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