我需要在数据库中插入一个数组字段,我很高兴地注意到PostGreSQL具有这个功能。但现在我无法使用表活动记录插入数据。
我试过以下电话,但没有成功。
$active_record->array_column = $_array_of_values;这给了我一个例外
引发的异常:CDbCommand未能执行SQL语句: SQLSTATE22P02:无效文本表示:7错误:数组值必须以"{“或维度信息开头
我也试过用
foreach($_array_of_values as $value){
$active_record->array_column[] = $value;
}这告诉我
FeatureRaw::$colors_names对过载性能的间接改性没有影响
有人能帮我吗?谢谢!
发布于 2012-01-19 13:55:17
数据必须是插入表格 (数组的文本表示):
INSERT INTO tbl (arr_col) VALUES ('{23,45}')或者:
INSERT INTO tbl (arr_col) VALUES ('{foo,"bar, with comma"}')因此,您需要将数组值括在'{}'中,并用逗号,分隔它们。在包含逗号的文本值周围使用双引号""。
我列出了要在相关答案中插入数组的更多语法变体。
发布于 2016-01-28 03:55:16
对于同样有问题的人:
我没有检查Yii1行为,但在Yii2中,您只需插入数组,就像在他的评论中提到的那样,插入格式正确的字符串:
$activeRecord->arrayField = '{' . implode(',',$array_values) . '}';当然,当您的$array_values有带有逗号的字符串时,您需要做出额外的努力。在加载ActiveRecord之后,您仍然需要将值转换回数组。
您可以在ActiveRecord的beforeSave()和afterLoad()中进行这些转换,并且不需要手动转换值。
UPD.最近,我为Yii2做了一个简单的行为,让它使用带有ActiveRecord的数组字段,而不需要手工构建字段:kossmoss/yii2 2-postgresql-数组-字段。这是解决这个问题的更广泛的方法,我希望它能有所帮助。对于那些使用Yii1的人:您可以研究包代码,并创建与您的框架兼容的解决方案。
https://stackoverflow.com/questions/8926781
复制相似问题