RedBeanPHP ile Etiket Sistemi

RedBeanPHP ile herhangi bir tablo için etiket sistemi yapmak istersek, ORM’nin içinde gelen birkaç özellikle beraber yapabiliyoruz. Örneğin, bir blog için gönderi tablomuz olsun. Gönderi tablosunda her gönderi için birden fazla etiket tanımlamak isteyelim. Şöyle örnekleyeyim;

<?php
$post = R::load("post", 5); // 5 numaralı gönderiyi seçiyorum
R::tag($post, ["etiket 1", "etiket 2", "etiket 3"]); // Gönderiye etiketleri tanımlıyorum

Çok basit birkaç işlem göründüğü üzere. Peki bu kodlar ne yapıyor? Veritabanında tag ve post_tag olmak üzere iki tane tablo oluşturuyor. tag tablosuna id, title olmak üzere iki tane sütun, post_tag tablosuna ise id, post_id, tag_id olmak üzere üç tane sütun oluşturuyor ve post tablosu ile ilişkilendiriyor. Bu ilişkilendirmeye Many to Many İlişki Tipi yazısında bahsetmiştim.

Bir gönderiye ait etiketleri listelemek istersek, aşağıdaki kodları yazıyoruz;

<?php
$post = R::load("post", 5); // 5 ID'li gönderiyi seçelim
$etiketler = R::tags($post); // Etiket listesini değişkene atıyorum
foreach ($etiketler as $etiket) { // Ve listeliyorum
    echo $etiket . ",";
}

Daha detaylı kullanımına ve diğer özelliklere şuradaki sayfadan göz atabilirsiniz.