Untuk menampilkan data dari database ke progam, kita pasti tidak lepas dari query ke database seperti perintah SELECT, INSERT, DELETE, dan lain sebagainya. Secara default, symfony 1.4 menggunakan ORM untuk interaksi dengan database. ORM yang digunakan adalah PROPEL dan DOCTRINE. Dan untuk tulisan saya kali ini dan tulisan saya selanjutnya akan menggunakan PROPEL.

Menampilkan Semua Data

      Untuk menampilkan semua data, biasanya kita menggunakan query SELECT * FROM .....Coba lihat kode berikut.


public function executeIndex(sfWebRequest $request)
{
$this->barangs = BarangPeer::doSelect(new Criteria());
}

di atas merupakan function index yang berada di direktori inventory/apps/frontend/modules/liststok/action/actions.class.php.


$this->barangs = BarangPeer::doSelect(new Criteria());

function doSelect()merupakan function yang digunakan untuk menampilkan data. doSelect() mempunyai parameter object dari Criteria, juka object Criteria kosong, maka doSelect() akan menampilkan semua data dari table di database atau hasilnya sama dengan perintah "SELECT * FROM BARANG". BarangPeer merupakan model object dari tabel yang berada di database. Untuk mempelajari lebih jauh tentang object peer, anda bisa buka di direktory lib/model project symfony anda.

Menggunakan Criteria

      Criteria digunakan untuk membuat query sql dengan berbagai kriteria yang di inginkan seperti where, order by, limit dan lain lain. Untuk menggunakan Criteria anda harus mendefinisikan object dari criteria terlebih dahulu.

$criteria = new Criteria();

$criteria merupakanonject dari Criteria yang digunakan untuk memanipulasi criteria yang di inginkan.


$criteria = new Criteria();
$criteria->add(BarangPeer::STOCK,0,Criteria::EQUAL);
$this->barangs = BarangPeer::doSelect($criteria);

di atas sama dengan perintah "SELECT * FROM BARANG WHERE STOCK=0". Criteria::EQUAL digunakan untuk mencari data yang sama. Ada beberapa Criteria yang disediakan oleh Propel :


Criteria::EQUAL
Criteria::NOT_EQUAL
Criteria::GREATER_THAN, Criteria::GREATER_EQUAL
Criteria::LESS_THAN, Criteria::LESS_EQUAL
Criteria::LIKE, Criteria::NOT_LIKE
Criteria::CUSTOM
Criteria::IN, Criteria::NOT_IN
Criteria::ISNULL, Criteria::ISNOTNULL
Criteria::CURRENT_DATE, Criteria::CURRENT_TIME,
Criteria::CURRENT_TIMESTAMP

sesuai dengan namany, anda pasti sudah bisa menebak untuk apa Criteria tersebut.

      Sementara cukup sekian tulisan saya kali ini. Saya lanjutkan di lain kesempatan. Terima kasih.

references : http://symfony.com/legacy/doc/jobeet/1_3/en/06?orm=Propel