抱歉,我是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>
数据库表
答案 0 :(得分:0)
你的Forminput“waypoints”是一个阵列! 因此,在进行插入之前,您必须先“转换”它
答案 1 :(得分:0)
您遇到错误:'waypoints' => $request->waypoints
无效,因为$request->waypoints
是一个数组,您无法将数组保存到VARCHAR()
字段中。如果你implode
输入,并将其转换为以逗号分隔的字符串,它应该可以正常工作:
`'waypoints' => implode(",", $request->waypoints`)
话虽如此,这通常被认为是一个坏主意;考虑使用Routes
和Waypoints
之间的关系作为单独的表格,以便清晰易用(特别是在检索/编辑时)。
答案 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());