Kamis, 03 September 2015

Dasar YII2 : Menggunakan Database

Setelah kemarin kita berhasil membuat form, sekarang kita akan mencoba menggunakan database pada YII 2. Di sini, saya menggunakan database MySQL.

Jadi, pertama-tama kita buat dulu sebuah database dengan nama yii2basic. Setelah itu kita buat tabel dengan nama negara. Bila tidak ingin repot, sebelum membuat tabel negara, silahkan copy kode SQL berikut dan jalankan pada MySQL.

CREATE TABLE `negara` (
  `code` CHAR(2) NOT NULL PRIMARY KEY,
  `name` CHAR(52) NOT NULL,
  `population` INT(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `negara` VALUES ('AU','Australia',18886000);
INSERT INTO `negara` VALUES ('BR','Brazil',170115000);
INSERT INTO `negara` VALUES ('CA','Canada',1147000);
INSERT INTO `negara` VALUES ('CN','China',1277558000);
INSERT INTO `negara` VALUES ('DE','Germany',82164700);
INSERT INTO `negara` VALUES ('FR','France',59225700);
INSERT INTO `negara` VALUES ('GB','United Kingdom',59623400);
INSERT INTO `negara` VALUES ('IN','India',1013662000);
INSERT INTO `negara` VALUES ('RU','Russia',146934000);
INSERT INTO `negara` VALUES ('US','United States',278357000);



Lalu buka db.php pada folder config dan sesuaikan host, dbname, username dan password. Karena kita tadi membuat database dengan nama yii2basic, maka pastikan dbname=yii2basic.



Kemudian buat file Negara.php dan isi seperti berikut :

<?php

namespace app\models;

use yii\db\ActiveRecord;

class Negara extends ActiveRecord
{
}

Setelah itu, buat file NegaraController.php pada folder controller dan isi seperti berikut :

<?php

namespace app\controllers;

use yii\web\Controller;
use yii\data\Pagination;
use app\models\Negara;

class NegaraController extends Controller
{
    public function actionIndex()
    {
        $query = Negara::find();

        $pagination = new Pagination([
            'defaultPageSize' => 5,
            'totalCount' => $query->count(),
        ]);

        $negara = $query->orderBy('name')
            ->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();

        return $this->render('index', [
            'negara => $negara,
            'pagination' => $pagination,
        ]);
    }
}

Lalu buat folder dengan nama negara di dalam folder views. Jangan lupa buat file index.php di dalamnya dan isi dengan script berikut :

<?php
use yii\helpers\Html;
use yii\widgets\LinkPager;
?>
<h1>Countries</h1>
<ul>
<?php foreach ($negara as $data): ?>
    <li>
        <?= Html::encode("{$data->name} ({$data->code})") ?>:
        <?= $data->population ?>
    </li>
<?php endforeach; ?>
</ul>

<?= LinkPager::widget(['pagination' => $pagination]) ?>
Nanti hasilnya akan seperti berikut :



Tidak ada komentar:

Posting Komentar