首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在将数组存储到Json数据库字段时,Laravel获得了"Array to string conversion“

在将数组存储到Json数据库字段时,Laravel获得了"Array to string conversion“
EN

Stack Overflow用户
提问于 2017-12-30 04:51:40
回答 3查看 13.1K关注 0票数 14

我正在尝试将一个带有选项的数组保存到postgres数据库的json数据字段中。我正在使用Laravel 5.5,并使用扩展"dimsav/laravel-translatable“进行翻译。

我的模型问题看起来像这样:命名空间应用程序;

代码语言:javascript
复制
use Illuminate\Database\Eloquent\Model;
use Dimsav\Translatable\Translatable;

class Question extends Model
{
    use Translatable;
    public $translatedAttributes = ['options', 'answer'];

    protected $casts = [
        'options' => 'array'
    ];
}

模型QuestionTranslation如下所示:

代码语言:javascript
复制
namespace App;

use Illuminate\Database\Eloquent\Model;

class QuestionTranslation extends Model
{

public $timestamps = false;
public $fillable = ['options', 'answer'];

}

和QuestionsController中的存储操作:

代码语言:javascript
复制
 public function store(Request $request)
{
    $question = new Question();

    $options[1] = "test1";
    $options[2] = "test2";

    $question->answer = 1;
    $question->options = $options;

    $question->save();

}

当我尝试存储这些数据时,我得到了错误:

代码语言:javascript
复制
Illuminate \ Database \ QueryException
Array to string conversion (SQL: insert into "question_translations" ("locale", "answer", "options", "question_id") values (en, 1, test1, 18) returning "id")

当我自己使用json_encode来强制转换$options时,我可以毫无问题地存储它。

你知道为什么拉弗尔铸件不起作用吗?也许是因为可翻译的扩展?

EN

回答 3

Stack Overflow用户

发布于 2018-10-11 02:01:38

可能会尝试使用以下命令:

代码语言:javascript
复制
protected $casts = [
    'options' => 'json',
];

我在MySQL上测试了它,但理论上它应该也能在PostgreSQL上运行。

票数 13
EN

Stack Overflow用户

发布于 2017-12-30 21:45:56

Stack Overflow用户

发布于 2021-03-02 14:44:16

还可以使用json_encode

代码语言:javascript
复制
public function store(Request $request)
{
    $question = new Question();

    $options[1] = "test1";
    $options[2] = "test2";

    $question->answer = 1;
    $question->options = json_encode($options);//json_encode

    $question->save();

}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48028315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档