RedBean ORM能够创建唯一键吗?

时间:2012-05-21 14:46:16

标签: php sqlite redbean

我希望RedBean在生成架构时创建唯一的键/索引。以下代码确实与我理解文档的方式相反 - 不是这样做的:

ř::设置( '源码:rss_loader.db3');

$bean = R::findOne(IMG);
if (!$bean->id) {
    $bean = R::dispense(IMG);
    $bean->setMeta("buildcommand.unique.0", array('url'));
    $bean->url      = 'text';
    R::store($bean);
    $bean->wipe();

    R::freeze(); //no more schema changes!
}

sqlite中发生的事情是这样的:

create table img (id integer primary key autoincrement, url) 

我期待的是:

create table img (id integer primary key autoincrement, url text unique) 

如果不针对RedBean编写SQL,可以实现这个吗?

1 个答案:

答案 0 :(得分:3)

您使用的是什么版本的Redbean?看起来他们更新了最新版本中的buildcommand。这就是手册所说的:

$bean->setMeta("buildcommand.unique" , array(array($property1, $property2)));

插入你拥有的东西:

$bean->setMeta("buildcommand.unique" , array(array('url')));

如果这不起作用,您可能必须阅读setMeta函数下的实际代码,看看实际发生了什么。

要在现有表上执行此操作,只需“存储”这样的空bean即可 - 无需将数据添加到数据库中:

$bean = R::dispense(IMG);
$bean->setMeta("buildcommand.unique", array(array(...)));
R::store($bean);

(警告,如果您在执行此操作后冻结,则无法保证拥有所有列)