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ı.
İlk Yorumu Siz Yapın