2012-05-21 18 views
5

RedBean'ın şema oluştururken benzersiz anahtarlar/dizinler oluşturmasını istiyorum. Aşağıdaki kod, belgeyi nasıl anladığımma ters düşmez: Bunu yapmayın:RedBean ORM benzersiz anahtarlar oluşturabiliyor mu?

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 ist'teki neler oluyor bu: Ben bekliyordum Ne

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

oldu bu:

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

bu Redbean karşı yazma SQL olmadan elde edilebilir mi?

+0

Dokümanlar bu konuyla ilgili olarak giderildiğine dikkat edin: https://github.com/gabordemooij/redbean/issues/159#issuecomment-5855404 – damianb

+0

Teşekkürler damianb-bu _real_ hızlıydı. – andig

cevap

3

Hangi Redbean sürümünü kullanıyorsunuz? En son sürümde buildcommand'u güncelledikleri görülüyor. Bu kılavuz ne diyor:

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

ne varsa takma: Bu işe yaramazsa

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

, sen setMeta fonksiyonu altında gerçek kod okuma ve ne görmek gerekebilir aslında devam ediyor. Peşinde dondurmak durumunda uyarı

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

(Word'de:

hiçbir veri DB eklenmesi gerekiyor bu- gibi boş bir fasulye "store" için yeterlidir varolan masada Bunu yapmak için Bunu yaparken, tüm sütunlarınız için garanti edilmez)

+0

Mükemmel. Bu hile, double dizisiyle birlikte buildcommand.unique kullanmaktır. – andig

+0

Ek: hiçbir veri DB ilave edilmesi gerekmektedir bu- gibi boş fasulye "depo" için yeterli olan mevcut bir masada Bunu yapmak için: $ fasulyesi = R ::, dökme (IMG); $ bean-> setMeta ("buildcommand.unique", dizi (dizi (...))); R :: mağaza (fasulye); – andig