gpt4 book ai didi

php - Laravel Eloquent PostgreSQL 保存数组错误: preg_replace(): Parameter mismatch

转载 作者:行者123 更新时间:2023-11-29 13:25:10 24 4
gpt4 key购买 nike

我正在研究 Laravel 4 和 Postgresql。我试图在 Postgresql 数组字段中存储一个数组。这是我的表格声明:

CREATE TABLE person_title (
id serial primary key,
title text,
name_list text[]
);

我尝试使用 Eloquent 插入一行:

public function create_person_title() {
$title = Input::get('title');
$name_list = Input::get('name_list');
$data = [
'title' : $title,
'name_list' : $name_list,
];
PersonTitle::create($data);
}

我收到这个错误:

preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

此错误来自 vendor/laravel/framework/src/Illuminate/Support/helpers.php:990 行。

我阅读了这个问题why do I get preg_replace() error when submitting a post form in Laravel?当我们尝试保存数组时会发生此错误。

但我真的想在我的 Postgresql 记录中存储一个数组(我应该能够做到)。你知道这样做的方法吗?

最佳答案

我通过修改我的列表找到了一种在 postgresql 数组文本字段中存储数组的方法。这是我的新观点:

public function create_person_title() {
$title = Input::get('title');
$name_list = Input::get('name_list');

// Can't save a null value
if (!$name_list) {
$name_list = [];
}

$name_list = json_encode($name_list);
$name_list = "'".preg_replace("#^\[(.*)\]$#", '{\1}', $name_list)."'";
$name_list = DB::raw($name_list);

$data = [
'title' : $title,
'name_list' : $name_list,
];
PersonTitle::create($data);
}

希望对您有所帮助。如果您的数组包含单引号和反斜杠等其他字符,请小心,您必须对它们进行转义。

如果没有人有更好的方法,我就是买家!

关于php - Laravel Eloquent PostgreSQL 保存数组错误: preg_replace(): Parameter mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35159267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com