İçeriğe geç

Laravel Eloquent – Attach ve Sync Farkı

Bildiğimiz gibi laravelde relationshipler üzerinden farklı modellere ve atlayabiliyoruz ve onları yönetebiliyoruz. Örneğin bir Topic ve Tag modelimiz olsun ve bir Topic e varolan Tag lardan eklemek istiyoruz ve bunu Many To Many ilişkisi ile yapıoruz. Yani bir Tag birden fazla Topic’e ait olabilir.

Öncelikle Many To Many ilişkilerde pivot tablonun (post_tags) Modeli olmamasından dolayı direkt olarak Model üzerinden create yapamıyoruz ancak laravel bunu kendi fonksyonları üzerinden çözmüş.

Attach fonksyonu pivot tablo üzerine sadece insert yapar. Örneğin $topic objesine var olan id si 2 olan bir tag ekleyelim.

$topic->tags()->attach(2);

Burada bu $topic için id si 2 olan bir tagı insert etmiş olduk.

Sync ise attach gibi insert yapar ancak buradaki temel fark, Sync fonksoyu bu $topic değişkeninin tags ilişkisindeki bütün tag ları siler ve kendisine verilen parametredeki id leri ilişki olarak ekler. Yani senkronize etmiş olur.

$topic->tags()->sync([1,3]);

Örneğin ilk başta yukarıdaki attach komutunu çalıştırıp daha sonra bu sync komutunu çalıştırsaydık $topic->tags() içerisinde sadece 1 ve 3 id li tag lar kalacaktı.

Tarih:Laravel

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir