我希望RedBean在生成模式时创建唯一的键/索引。以下代码与我理解文档的方式相反,因此无法做到这一点:

R::setup('sqlite: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的情况下实现?

最佳答案

您正在使用哪个版本的Redbean?看来他们已将buildcommand更新为最新版本。这就是手册所说的:

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

插入您所拥有的:
$bean->setMeta("buildcommand.unique" , array(array('url')));

如果这不起作用,则可能必须阅读setMeta函数下的实际代码,并查看实际发生的情况。

要在现有表上执行此操作,只需像这样“存储”一个空bean就足够了-无需将任何数据添加到DB:
$bean = R::dispense(IMG);
$bean->setMeta("buildcommand.unique", array(array(...)));
R::store($bean);

(警告词,如果这样做后卡住,则不能保证您拥有所有的列)

关于php - RedBean ORM能够创建唯一 key 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10687484/

10-10 22:06