首页 > 解决方案 > 在 Laravel/PHP 中将多项选择转换为数组,返回 Err:Array 到字符串转换

问题描述

我正在尝试使用 Laravel 创建一个小型披萨订购应用程序,这个问题的目的是将浇头添加到名为 toppings 的 SQL 列中。

除了浇头外,一切都按预期工作。如果用户选择要添加的多个浇头,则需要将选项组合成一个数组,然后组合成一个 toppings sql 列中的字符串值。我关注的资源显示了他们的 mySQL 表: 资源 sql 结果

请注意最后一列 [toppings],选择了一系列配料。

我试图自己合并它,我还查看了其他资源并将它们跟踪到“T”,但问题仍然存在。

我必须说一切正常,只是浇头没有。

我已经截取了屏幕截图,因为我相信它会更容易理解。

html 网页表单

这是 webform 布局,为每个顶部复选框指定了 toppings[array]。迁移:

CreatePizza_Migration

正如我们所见,已为浇头指定了 json。

比萨控制器:

比萨控制器

我要求已选择的浇头。

比萨模型

根据我正在关注的资源,图5似乎是问题所在。当我走上披萨/创建路线时,输入名称并选择一些配料,如图所示。

比萨网络表单

注意:即使您选择单个顶部,下一个错误也会出现。

数组到字符串的转换

如果有人有任何想法,我不确定如何解决这个问题。我将不胜感激,如果需要更多信息,请告诉我。

先感谢您。

标签: phpmysqllaravel

解决方案


解决方案取决于 laravel 版本,但尝试添加一个 mutator 来保存浇头:

/**
     * Set the pizza's toppings.
     *
     * @param  string  $value
     * @return void
     */
    public function setToppingsAttribute($value)
    {
        $this->attributes['toppings'] = json_encode($value);
    }

推荐阅读