Eloquent ORM

25
Eloquent ORM Arda Kılıçdağı [email protected] Twitter: @ardadev linkedin.com/in/ardakilicdagi

description

Slides of my presentation "Eloquent ORM" for PHPKonf, which occurred in Istanbul Sehir University in

Transcript of Eloquent ORM

Page 1: Eloquent ORM

Eloquent ORMArda Kılıçdağı

!

[email protected] Twitter: @ardadev

linkedin.com/in/ardakilicdagi

Page 2: Eloquent ORM

ORM Nedir?!

Object-relational mapping !

Nesne-İlişkisel Eşleme

Page 3: Eloquent ORM

Eloquent ORM

Page 4: Eloquent ORM

Temel Model Propertyleri

Page 5: Eloquent ORM

Temel CRUD İşlemleriCreate Read

Update Delete

Page 6: Eloquent ORM

Soft Deletes(Belirsiz Silme)

Page 7: Eloquent ORM

Query Scopes(Sorgu Kapsamları)

Page 8: Eloquent ORM

Relationshipsİlişkiler:

!

• One-to-One • One-to-Many • Many-to-Many • Has-Many-Through • Polymorphic • Many-to-Many Polymorphic

Page 9: Eloquent ORM

Relationships//Temel bir ilişki yapısı hazırlama public function iliskiAdi(){ return $this->iliskiSekli( 'ModelAdı', 'foreignVeyaLokalkey1', 'foreignVeyaLokalKey2') ->isteniyorsaWhereGibiFiltrelemeler() ->hattaOrderByGibiSıralama(); }

Page 10: Eloquent ORM

One to One Relationships

Page 11: Eloquent ORM

One-to-one Relationshippublic function relationAdi(){ return $this->hasOne( 'ModelAdı', //Hangi modelle ilişki? 'foreignKey', //ModelAdı'ndaki relation sütunu 'lokalRelationKey' //ya id değilse? ); }

Page 12: Eloquent ORM

One-to-many Relationship

Page 13: Eloquent ORM

One-to-many Relationship

public function relationAdi(){ return $this->hasMany( 'ModelAdı', //Hangi modelle ilişki? 'foreignKey', //ModelAdı'ndaki relation sütunu 'lokalRelationKey' //ya id değilse? ); }

Page 14: Eloquent ORM

Many-to-Many Relationships

blog_id

Page 15: Eloquent ORM

Many-to-Many Relationshippublic function relationAdi(){ return $this->belongsToMany( 'ModelAdı', //Hangi modelle ilişki? 'tabloadi', //Pivot tablo adı 'localKey', //Pivot tabloda kendi id'sini tutan sütun 'foreignKey', //Pivot tablodaki bağlanacağı modelin id'sin tutacak sütun ) (opsiyonel)->withPivot('pivotTablosundaki EkstraSutun'); //Eğer pivot tablosunda çekilmesi gereken ekstra sütun(lar) varsa (opsiyonel)->withTimestamps(); //eğer pivot tabloda timestampler varsa }

Page 16: Eloquent ORM

Has-Many-Through Relationships

Page 17: Eloquent ORM

Has-Many-Through Relationships

Page 18: Eloquent ORM

Polymorphic Relations

Çokbiçimli ilişkiler

Page 19: Eloquent ORM

Polymorphic Relations

Page 20: Eloquent ORM

Polymorphic Relations

Page 21: Eloquent ORM

Relation Sorgulama!

has() whereHas()

orWhereHas()

Page 22: Eloquent ORM

N+1 Sorgu Sorunsalı!

-Relationship'ler çok fazla loop olduğunda veri kaynağını yormaz mı? -Bu sorgularda performansı nasıl artırabiliriz?

Page 23: Eloquent ORM

Eager Loading

Page 24: Eloquent ORM

Teşekkürler!

Page 25: Eloquent ORM

http://bit.ly/laravel-kitabi

http://bit.ly/laravel-design-patterns

http://bit.ly/raspberry-pi-kitabi

Sorular?