5

スキーマを生成するときに 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 を書き込まずに達成できますか?

4

1 に答える 1

3

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);

(警告の言葉、これを行った後にフリーズすると、すべての列があるとは限りません)

于 2012-05-21T17:24:02.693 に答える