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