Membuat fungsi Unique Slug pada codeigniter

Membuat fungsi Unique Slug pada codeigniter
Biasanya hanya menggunakan md5 atau dengan kombinasi fungsi url_title() dan juga random_string() untuk membuat link (slug) yang unik . Ya karena memang belum dibutuhkan untuk publik. Cara ini memang berhasil dengan baik apalagi untuk data yang masuk.

`

Kondisinya sekarang berbeda, harus membuat yang benar-benar mampu menyelesaikan masalah teantang unique slug yang katanya juga akan meningkatkan SEO. Alhamdulillah, cara pertama sebelumnya ku temukan pada halaman http://stackoverflow.com/a/20439902/2094645

$i = 1; $baseSlug = $slug;
while(slug_exist($slug)){
    $slug = $baseSlug . "-" . $i++;        
}

return $slug;

Dengan cara diatas memang mengatasi masalah semula, namun tidak selalu. Kenapa ?
Misalnya ada data slug ini-slug, maka dengan skrip tersebut, jika data dalam database ada maka akan menghasilkan slug baru< dengan slug ini-slug-2.
Sudah benar bukan ?
Tapi setelah dicoba memasukkan data slug yang pertama lagi, maka akan menciptakan ini-slug-2 lagi dan lagi.

Karena kurang memuaskan untuk skrip pembuat link yang unik tersebut, dimodifikasi sedemikian rupa sehingga menjadi seperti berikut: (inget ya, ini menggunakan fungsi db pada CI)

function no_duplicate_slug($slug, $table, $primary = 'id') {

 $q = $this->db->like('slug', $slug, 'both')
    ->order_by($primary, 'ASC')
    ->get($table);

 if($q->num_rows() > 0) {
  $l = $q->last_row();
  $slug = $slug . '-' . $l->$primary;
 }
 return $slug;
}
Penjelasannya begini,
dengan memasukkan slug yang dimaksud, maka akan dicheck keberadaannya didalam database dengan tabel $table. Jika data pada database tersedia maka akan membuat slug baru dengan angka dibelakang slug tersebut sesuai dengan $primary tabel tersebut.

Itu saja skrip membuat link unik sederhana, semoga bermanfaat dan semoga sukses.

Toto Prayogo