【发布时间】:2017-11-08 09:46:12
【问题描述】:
- 使用 jsonb 类型的新字段创建迁移,不为 null 且默认值 = []。 (存储数据示例:["235", "214"])并将规则添加到模型 [['unique_users'], 'safe']
public function up()
{
$connection = Yii::$app->getDb();
$sql = 'ALTER TABLE offer ADD unique_users jsonb not null default \'[]\'';
$command = $connection->createCommand($sql, []);
$command->queryAll();
}
结果:为每一行添加了一个具有默认值 [] 的 unique_users 字段。 jsonb_typeof(unique_users) 返回一个 array 类型。
- 为测试创建了所需的查询
select jsonb_array_length(unique_users) from test where unique_users @> '"19"'::jsonb
PgAdmin 的结果:
似乎一切都准备好了。但是用Yii2保存新记录后,收到查询错误:
错误:您无法获得标量的长度
我看到字段中记录了另一个值 - ""
我尝试将验证规则添加到模型:['unique_users', 'default', 'value' => '[]'],。 结果:
...有同样的查询问题 - 值不是数组。 jsonb_typeof(unique_users) 返回一个 string 类型。
如何将空数组插入jsonb列?
【问题讨论】:
标签: postgresql yii2 jsonb