Symfony 2 , Database dengan Doctrine


Asumsi anda sudah mengerti tentang Bundle dan Router, kalo belum baca : Budle dan Route

Symfony ORM Doctrine

Database Mysql di Symfony dengan ORM Doctrine.

Konfigurasi database anda terlebih dahulu, file konfigurasi untuk database terdapat di folder dibawah ini :

app/config/parameters.ini

di file parameters.ini akan terdapat baris basis konfigurasi yang akan menjadi akses Symfony ke database, kesalahan pada bagian ini akan menyebabkan kegagalan koneksi kedatabase, pastikan username dan password Mysql anda adalah benar.

Lengkapi parameters.ini dengan

[parameters]
    database_driver   = pdo_mysql
    database_host     = localhost
    database_port     =
    database_name     = nama_database_anda
    database_user     = username_mysql_anda
    database_password = pass_mysql_anda

Sekarang Doctrine sudah dapat mengakses database anda, sekarang buka CONSOLE/Terminal anda untuk membuat database, hmhm membuat database selalu menjadi bagian paling sexy.🙂, hmhmh next …

Buka console dan masuk ke directory project anda diconsole (directory project adalah directory yang menampung directory app, src, bin vendor dkk ), lalu ketikkan perintah untuk membuat database sesuai dengan parameter yang sudah kita buat diatas :

php app/console doctrine:database:create

sehingga akan menghasilkan output sbb :
Created database for connection named nama_database_anda

Selanjutnya membuat Entity Class

Entity Class yang kita buat ini bernama Class User, dengan menggunakan object ini kita nanti tidak perlu lagi memikirkan SQL, database, table atau doctrine itu sendiri, kita cukup berinteraksi dengan Object yang bernama User saja, itulah ORM , simple kan ? itulah OOP.

<?php
namespace BelajarSym\UserBundle\Entity;
class User {
    protected $name;
    protected $password;
    protected $description;
}

Simpan Entity User diatas dengan nama User.php (sampai di sini, serasa ngoding JAVA ya #_#🙂 ).

Cara lain Membuat Entity Adalah dengan Console jadi kita g perlu ngetik banyak code (Hapus dulu User.php diatas biar g error, kan kita mau bikin lagi pake console):

Untuk itu kembali Menuju Console untuk meng generate Entity User :

php app/console doctrine:generate:entity –entity=”BelajarSymUserBundle:User” –fields=”name:string(255) password:string(255) description:text”
<Enter>
Lalu akan muncul :

Welcome to the Doctrine2 entity generator

This command helps you generate Doctrine2 entities.

First, you need to give the entity name you want to generate.
You must use the shortcut notation like AcmeBlogBundle:Post.

selanjutnya enter dan enter terus sampai beres, yang artinya kita menerima Default.

akhirnya pesan terakhir adalah :

 You can now start using the generated code!

Buka User.php di folder Entity yang tadi dibuat / digenerate kalo digenerate🙂

Isi hasil Generate  dengan php app/console doctrine:generate:entity –entity=”BelajarSymUserBundle:User” –fields=”name:string(255) password:string(255) description:text” adalah:

<?php
namespace BelajarSym\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
 * BelajarSym\UserBundle\Entity\User
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class User
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name=”id”, type=”integer”)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy=”AUTO”)
     */
    private $id;

    /**
     * @var string $name
     *
     * @ORM\Column(name=”name”, type=”string”, length=255)
     */
    private $name;

    /**
     * @var string $password
     *
     * @ORM\Column(name=”password”, type=”string”, length=255)
     */
    private $password;

    /**
     * @var text $description
     *
     * @ORM\Column(name=”description”, type=”text”)
     */
    private $description;

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name
     *
     * @param string $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    /**
     * Get name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set password
     *
     * @param string $password
     */
    public function setPassword($password)
    {
        $this->password = $password;
    }

    /**
     * Get password
     *
     * @return string
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * Set description
     *
     * @param text $description
     */
    public function setDescription($description)
    {
        $this->description = $description;
    }

    /**
     * Get description
     *
     * @return text
     */
    public function getDescription()
    {
        return $this->description;
    }
}

Nah Sekarang Entity User Sudah beres Selanjutnya tinggal Membuat Table User dari Entity User diatas, kembali ke Console …

Di Console ketikkan perintah :

php app/console doctrine:schema:update –force
Sehingga muncul pesan berhasil dibawah Ini :

Updating database schema…
Database schema updated successfully! “1” queries were executed

*kalo ada error yang isinya ada kata kata not writeable / access denied yang mengarah ke path tertentu, ga usah ambil pusing langsung aja sudo chmod -R 777 /alamat/si/folder/yang/ga/bisa/diakses/

Sekarang Buka src/BelajarSym/UserBundle/Controller Buka UserController.php  yang dibuat di artikel sebelumnya , kita akan menyelipkan beberapa baris Kode.

Kode UserController.php sebelumnya :

<?php
    namespace BelajarSym\UserBundle\Controller;
    use Symfony\Component\HttpFoundation\Response;
    class UserController {       

      public function indexAction($name) {
            return new Response(‘<html><body>Hello ‘.$name.’!</body></html>‘);
        }   

    }
?>

Rubah  UserController.php diatas Menjadi :

<?php
namespace BelajarSym\UserBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use BelajarSym\UserBundle\Entity\User;
use Symfony\Component\HttpFoundation\Response;

class UserController extends Controller {
    
    public function indexAction($name) {
        return new Response(‘<html><body>Hello ‘.$name.’!</body></html>’);
    }

    public function createAction($name) {
        $user = new User();
        
        $user->setName($name);
        $user->setPassword(‘inipasswordyangtidakamantapiluthudanimoettapisekilaskayasha1ya?anggapsajabegitu’);
        $user->setDescription(‘Seseorang yang sangat imut dan lucu, terkadang menggemaskan’);
        
        $em = $this->getDoctrine()->getEntityManager();
        $em->persist($user);
        $em->flush();
       
        return new Response(‘Created User id ‘.$user->getId());
    }

}
?>

Sekarang JANGAN LUPA Kita Tambah Routenya biar dikenali dari URL

Buka app/config/routing.yml tambahkan line berikut :

user_add:
    pattern: /user/add/{name}
    defaults: { _controller: BelajarSymUserBundle:User:create }

Nah sudah selesai coba buka di browser http://www.belajarsym.xom/web/app.php/user/add/kokomz (ini sesuai Virtual host yang disini ya)…  lalu cek di database, masuk g ?enggak ?? wah … belum beruntung… coba lagi….

Artikel ini berelasi dengan :

link1

link2

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s