2014-07-24 46 views
9

Bir tablonun birincil anahtarı olarak bir dize sütunu ayarlamaya çalışıyorum, sonra başka bir tablodan bir yabancı anahtar olarak referans alıyorum. Bu mümkün mü? belgelere Başına:Laravel - tam sayı olmayan yabancı birincil anahtar nasıl kullanılır?

Laravel assumes every table has a numeric primary key (usually named “id”) and ensures the value of this column is unique for each new row added to the table. Laravel doesn’t really work well unless each table has a numeric primary key. So, for your average Laravel application, please ensure that you define a primary key using the increments() method. 

Benim durumumda, ben faydasız olacağı gibi bir id sütun tanımlamak istemiyoruz. Tanımlamak istediğim dize sütunu birincil anahtar olarak işlev görecektir. Bu mümkün ise, örnek bir geçiş snippet'i alabilir miyim?

+0

@Strawberry - ben bir tamsayı 'id' tanımlamak gerekir demek ??? – StackOverflowNewbie

+0

Laravel'i kullanmak istiyorsan, Laravel'in yapmanı söylediği her şeyi yapman gerektiğinden şüpheleniyorum! – Strawberry

cevap

2

Eloquent'de dize olamaz neden bu daha fazla ayrıntı bu forum archive bulunabilir.

Ayrıca, yoruma: Eloquent, normalization rules ile uyumludur. Altuğ, SQL, yabancı anahtarları dizeleri veya tamsayılar fark etmeden destekler, genellikle tamsayı anahtarlarını kullanan Eloquent’i kullanmak için uygulamanıza bir tamsayı biçim anahtarı eklemeyi düşünmelisiniz.

11

Bu eski bir sorudur, ancak doğruluk adına, Eloquent'in mevcut sürümlerinde gerçekten sayısal olmayan/birincil anahtarlar kullanabileceğinizi belirtmek isterim.

Yapmanız gereken tek şey, $incrementing özelliğini false numaralı arabelleğe kaydetme kimlikleri kullanmayan modellerde ayarlamaktır.

class Employee extends Model 
{ 
    public $incrementing = false; 

    // ... 
} 

da, geçiş böyle bir şey olabilir:

Schema::create('employees', function (Blueprint $table) { 
    $table->string('id')->primary(); 
    // ... 
}); 
+0

Bu şimdi bana yardımcı oldu. Teşekkürler! – ceejayoz

+0

Ve bu, "korumalı $ primaryKey =" slug "; –

İlgili konular