Kohana ORM Tips

Kalo kita pernah baca manual kohana, terus kita liat ke bagian ORM, di sana ada contoh seperti berikut:

$user->add(ORM::factory('role', 'admin'));

nah, ORM::factory(‘role’, ‘admin’), mestinya kalo kita coba itu gak bisa ya, karena ORM akan mencoba untuk mencari berdasarkan unique_field nya (pada contoh sebelumnya, field id adalah unique).

Nah skr, gw akan coba trik ini.

Pada table posts yang lalu, kita coba tambahin field ‘slug’, sehingga tabelnya menjadi:

id | title     | status_id | slug


1  | title #1  | 3         | title-1
2  | title #2  | 1         | title-2
3  | title #2  | 2         | title-3

Tentu dengan mudah kita bisa membuat title-1 dan yang lainnya menggunakan helper: url::title(), tapi sebagai catatan, field slug ini *harus unique* juga, sebagaimana field id.

Kemudian, pada PostModel class, kita tambah sebuah method:

// models/post.php
class PostModel extends ORM
{
  ...
  public function uniquekey($id)
  {
    if (!empty($id) AND isstring($id) AND !ctypedigit($id))
    {
      return 'slug';
    }
    return parent::uniquekey($id);
  }
  ...
}

perhatikan baik, nilai yang dikembalikan pada fungsi unique_key adalah ‘slug’ (nama field yang barusan kita tambah di table posts).

public function blog($slug)
{
  $post = ORM::factory('post', $slug);
}

Sekarang kita bisa menggunakan ‘slug’ ini sebagai id atau juga sebagai url. misal kalo di blog gw ini menjadi: blog/kohana-orm-2.php