Merhaba Phphocasi.com.tr takipçileri,
Laravel ile eğitim serimizin yeni dersinde Laravel Eloquent yapısının en verimli kullanımı olan Relation sisteminin en basit yöntemi olan One to One Relation (birebir ilişki) yapısını anlatacağım. Sizin yorumlarınız çok önemli lütfen paylaşım ve yorumlarınızı bizden esirgemeyin
Laravel Eloquent One to One Relation Nedir?
Bir önceki dersimizde sizinle paylaştığım Eloquent sisteminin model yapıları üzerinden etkileşimli olduğunu belirtmiş ve Eloquent sisteminin en önemli yapısı olarak Relation (ilişki) sistemleri olduğunu belirtmiştim. Şimdi bu ilişkilerin en basit hali olan Eloquent One to One Relation sistemini inceleyelim.
Örnek olarak, her kullanıcının sadece tek bir TC Kimlik Numarası olduğunu ele alalım. Burada ilişki kurabilmek için birden fazla veritabanına sahip olmalıyız. Bunun için TC Kimlik Numarasını ekstra bir kolon da yapabiliriz fakat o zaman bir ilişki kuramayız. Bu yüzden numaraların farklı bir tabloda tutulacağı gibi gerçekçi olmayan bir veritabanı hazırlamalıyız.
php artisan make:model Tckn -m
kodunu yazarak Tckn adında bir model ve bu modele bağlı bir migration dosyası oluşturuyoruz. Oluşturduğumuz migration dosyasının içerisine
$table->integer("user_id"); $table->string("tckn");
yazarak User tablosu ile ilişkisini kuracağımız user_id kolonunu ve numaraları barındıracak kolonu ekliyoruz.
Daha sonra
php artisan migrate
oluşturduğumuz migration dosyasını veritabanımıza yazıyoruz.
![laravel eloquent one to one](https://www.phphocasi.com.tr2018/11/laravel-eloquent-one-to-one-1-1024x842.jpg)
Yukarıda yer alan görselde User model dosyası içerisine Tckn modeli ile ilişkisinin sağlayacağımız fonksiyonu yazıyoruz. Bu bağlantıyı sağladıktan sonra kodlarımızda yapmamız gereken sadece
$tckn = User::find(1)->tckn->tckn;
bu sayede kullanıcımızın kimlik numarasını almış oluyoruz. Sağ bölümde yer alan ilk tckn fonksiyonumuzun adı en sondaki ise kolon adıdır. Eğer biz user_id yerine person_id kullanmak istersek bunun için modelde yer alan tckn fonksiyonunda ufak bir değişiklik yapmamız gerek.
return $this->hasOne("AppTckn", "person_id");
bu değişiklik sonrası tablolarımızda ilişkisel kolonlarımızı belirtmiş olduk.
Şu andaki ilişki yapısı üyelerin kimlik numarasını bulmak üzere. Fakat bunun bir de zıt yönlü ilişkisini kurmak istersek yani kimlik numarasından kullanıcıyı bulmak istersek yapmamız gereken bu ilişkinin tersinin de olduğunu belirtmek.
![laravel eloquent one to one](https://www.phphocasi.com.tr2018/11/laravel-eloquent-one-to-one-1024x861.jpg)
Yukarıda yer alan ekran görüntüsünde belongsTo kullandığımızı görebilirsiniz. Bu bize tckn modelinin user modeline aitlik ilişkisi oluşturur.
Bu ilişkiyi kodlarımızda
$username = Tckn::find(1)->user->name;
şeklinde kullanabilir ve user tablomuzdaki istediğimiz veriye sadece kimlik numarası bilerek ulaşabiliriz.
Yine yukarıdaki gibi 2. parametreyi kullabilirsiniz.
Phphocasi.com.tr için yazdığım bu yazımda Laravel Eloquent One to One Relation yapısından bahsetmeye çalıştım. Daha fazla detaylı bilgi için laravel dökümanından yararlanabilirsiniz.
Tüm Laravel Derslerimiz için tıklayınız.
Phphocasi.com.tr üzerinden yayınladığım laravel eğitimlerine devam edeceğiz. Yazımız ile ilgili tüm sorularınızı yorum bölümden ulaştırabilirsiniz. Bunun dışındaki diğer sorularınız için sorucevap.phphocasi.com.tr sitesini kullanabilirsiniz.
Umarım sizin için yararlı olmuştur. Okuduğunuz için teşekkürler. Daha fazla kişinin okuması için paylaşmayı unutmayın…
28