Php RedBean ORM能够创建唯一的键吗?

Php RedBean ORM能够创建唯一的键吗?,php,sqlite,redbean,Php,Sqlite,Redbean,我希望RedBean在生成模式时创建唯一的键/索引。与我理解文档的方式相反,以下代码没有这样做: R::setup('sqlite:rss_loader.db3') sqlite中发生的情况如下: create table img (id integer primary key autoincrement, url) 我所期待的是: create table img (id integer primary key autoincrement, url text unique) 如果不针对

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

R::setup('sqlite:rss_loader.db3')

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即可-无需向数据库添加数据:

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

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

非常好。诀窍是将buildcommand.unique与双数组一起使用。附录:要在现有表上执行此操作,只需像这样“存储”一个空bean即可-无需向DB添加数据:$bean=R::dispense(IMG)$bean->setMeta(“buildcommand.unique”,数组(数组(…));R::商店($bean);注意到文档已经对此进行了修复,请参阅:谢谢damianb-这真是太快了。
$bean = R::dispense(IMG);
$bean->setMeta("buildcommand.unique", array(array(...)));
R::store($bean);