如何在Yii中使用Postgresql Array_Append()和Array_Remove()?

时间:2013-12-06 13:36:49

标签: php sql postgresql yii

如何在Yii中使用PostgreSQL array_append()array_remove()?我正在尝试更新以下表行的数组类型属性 -

CREATE  TABLE Books(
id INT NOT NULL PRIMARY KEY,  
name UUID[])

Sample data rows: 
1       NULL
2       NULL

$books=Books::model()->findByPk($id);
$books->name='array_append(name, $Name_key_array)';
$books->save();

我发现以下错误:

CDbException
CDbCommand failed to execute the SQL statement: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: array value must start with "{" or dimension information

但是如果我直接使用数组那么它的工作,但不是在使用变量名时,即

array_append({1,2,3}, {4})

另外,我已经尝试了很多方法,但没有找到任何成功。我希望能找到解决这个问题的好主意。

1 个答案:

答案 0 :(得分:1)

我认为你以其他方式使用array_append()。它应该是这样的

SELECT array_append(ARRAY[1,2], 3);
 array_append
--------------
 {1,2,3}
(1 row)

所以,如果我纠正你的,那应该是

$books->name='array_append($Name_key_array, name)';

要从数组中删除元素,请检查此解决方案:http://www.youlikeprogramming.com/2013/06/removing-values-from-a-postgresql-array/

到PostgreSQL数据中的数组必须按以下方式插入,

INSERT INTO table (arr_col) VALUES ('{val1,val2, val3}');

http://www.postgresql.org/docs/9.1/static/arrays.html