Index Oluşturma:
Laravel şema oluşturucu çeşitli indeks türlerini destekler. Aşağıdaki örnek yeni bir e-mail sütunu oluşturmakta ve değerlerinin benzersiz olması gerektiğini belirtmektedir. İndeksi oluşturmak için, unique metodunu sütun tanımına zincirleyebiliriz:
use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; Schema::table('users', function (Blueprint $table) { $table->string('email')->unique(); });
Alternatif olarak, sütunu tanımladıktan sonra dizini oluşturabilirsiniz. Bunu yapmak için, şema oluşturucu planında unique yöntemini çağırmalısınız. Bu yöntem, benzersiz bir dizin alması gereken sütunun adını kabul eder:
$table->unique('email');
Bileşik (veya kompozit) bir dizin oluşturmak için bir index yöntemine bir dizi sütun bile aktarabilirsiniz:
$table->index(['account_id', 'created_at']);
Bir indeks oluştururken, Laravel tabloya, sütun adlarına ve indeks türüne göre otomatik olarak bir indeks adı oluşturacaktır, ancak indeks adını kendiniz belirtmek için yönteme ikinci bir argüman iletebilirsiniz:
$table->unique('email', 'unique_email');
Tablo da iki alanın birleşik ve benzersiz olmasını isteyebiliriz. Mesela, Bir kişinin sadece bir rolu tek kayıt olamasını isteyebiliriz.
$table->unique(['role_id', 'user_id']);
Fulltext için:
$table->fullText('body');
İndeksleri Silme:
Bir indeksi bırakmak için, indeksin adını belirtmelisiniz. Varsayılan olarak, Laravel tablo adını, indekslenen sütunun adını ve indeks türünü temel alarak otomatik olarak bir indeks adı atar. İşte bazı örnekler:
Command | |
$table->dropPrimary('users_id_primary'); | |
$table->dropUnique('users_email_unique'); | |
$table->dropIndex('geo_state_index'); | |
$table->dropFullText('posts_body_fulltext'); |
Schema::table('geo', function (Blueprint $table) { $table->dropIndex(['state']); // Drops index 'geo_state_index' });
Foreign:
$table->dropForeign(['user_id']);
0 Yorum
Önerilen Yorumlar
Görüntülenecek yorum yok.