我需要在数据库中插入一个数组字段,我很高兴地注意到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对过载性能的间接改性没有影响
有人能帮我吗?谢谢!
发布于 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
复制相似问题