2012-05-21 6 views
5

私は、スキーマを生成する際に、RedBeanで一意のキー/インデックスを作成したいと考えています。次のコードは、私がドキュメントを理解する方法に反して、これをしません。RedBean ORMは一意のキーを作成できますか?

R :: setup( 'sqlite:rss_loader.db3');このイストのsqliteで何が起こっている

$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! 
} 

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

がRedBeanに対する書き込みSQLなしでこれを達成することができます:

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

私は期待していた何がこのでしたか?

+0

このことについてドキュメントが修正されていることに留意して、https://github.com/gabordemooij/redbean/issues/159#issuecomment-5855404 – damianb

+0

を参照してくださいdamianb-それは_real_ quickでした。 – andig

答えて

3

Redbeanのどのバージョンをお使いですか?最新のバージョンでbuildcommandを更新したようです。これはマニュアルは言う:

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

はあなたが持っているものをプラグ:問題が解決しない場合は

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

は、あなたがsetMeta機能の下で実際のコードを読んで、何で参照する必要があり実際に起こっている。

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

(警告の言葉を、あなたは後に凍結した場合:データがDBに追加する必要がないことがthis-のような空の豆「ストア」には十分である既存のテーブルの上にこれを行うには

これを行うと、すべての列を持つことは保証されません)

+0

優れています。そのトリックは、double配列と一緒にbuildcommand.uniqueを使用することです。 – andig

+0

補遺:それは「ストア」に十分である既存のテーブルでこれを行うには this-等空ビーンデータはDBに追加する必要がありません: $豆= R ::分配(IMG)。 $ bean-> setMeta( "buildcommand.unique"、array(array(...))); R :: store($ bean); – andig

関連する問題