Bạn vào application/bootstrap.php tìm Kohana::modules thay thế thành
Kohana::modules(array(
// 'auth' => MODPATH.'auth', // Basic authentication
// 'cache' => MODPATH.'cache', // Caching with multiple backends
// 'codebench' => MODPATH.'codebench', // Benchmarking tool
'database' => MODPATH.'database', // Database access
// 'image' => MODPATH.'image', // Image manipulation
// 'orm' => MODPATH.'orm', // Object Relationship Mapping
// 'unittest' => MODPATH.'unittest', // Unit testing
// 'userguide' => MODPATH.'userguide', // User guide and API documentation
));
Và sau đó bạn vào thư mục modules/database/config/ copy fle database.php vào thư mụcapplication/config và mở file database.php đó lên ta thay thế bằng
<?php
defined
('SYSPATH') or die('No direct access allowed.');
return array
(
'default' => array
(
'type' => 'mysql',
'connection' => array(
/**
* The following options are available for MySQL:
*
* string hostname server hostname, or socket
* string database database name
* string username database username
* string password database password
* boolean persistent use persistent connections?
* array variables system variables as "key => value" pairs
*
* Ports and sockets may be appended to the hostname.
*/
'hostname' => 'localhost',
'database' => 'k_db',
'username' => 'root',
'password' => 'root',
'persistent' => FALSE,
),
'table_prefix' => '',
'charset' => 'utf8',
'caching' => FALSE,
'profiling' => TRUE,
),
'alternate' => array(
'type' => 'pdo',
'connection' => array(
/**
* The following options are available for PDO:
*
* string dsn Data Source Name
* string username database username
* string password database password
* boolean persistent use persistent connections?
*/
'dsn' => 'mysql:host=localhost;dbname=kohana',
'username' => 'root',
'password' => 'r00tdb',
'persistent' => FALSE,
),
/**
* The following extra options are available for PDO:
*
* string identifier set the escaping identifier
*/
'table_prefix' => '',
'charset' => 'utf8',
'caching' => FALSE,
'profiling' => TRUE,
),
);
Và các bạn chay query sql sau:
CREATE DATABASE /*!32312 IF NOT EXISTS*/`k_db` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
USE `
k_db`;
/*Table structure for table `book` */
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`book_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`book_name` VARCHAR(255) COLLATE utf8_bin DEFAULT NULL,
`book_description` TEXT COLLATE utf8_bin,
`book_price` DOUBLE DEFAULT NULL,
`member_id_post` INT(11) DEFAULT NULL,
PRIMARY KEY (`book_id`)
) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;
/*Data for the table `book` */
LOCK TABLES `book` WRITE;
INSERT INTO `book`(`book_id`,`book_name`,`book_description`,`book_price`,`member_id_post`) VALUES (1,'Book 1','description book 1',1.2,1),(2,'Book 2','description book 2',1.99,2),(3,'Book 3 ','description book 3',0.99,1),(4,'Book 4','description book 4',0.49,3);
UNLOCK TABLES;
/*Table structure for table `member` */
DROP TABLE IF EXISTS `member`;
CREATE TABLE `member` (
`member_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`member_name` VARCHAR(255) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`member_id`)
) ENGINE=MYISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*Data for the table `member` */
LOCK TABLES `member` WRITE;
INSERT INTO `member`(`member_id`,`member_name`) VALUES (1,'Kenny'),(2,'Mr.Storm'),(3,'Member');
UNLOCK TABLES;
Và các bạn tạo 1 controller book với nội dung như sau đối với bạn chưa biết thì có thế đọc tại đây Controller:
<?php
defined
('SYSPATH') or die('No direct script access.');
class
Controller_Book extends Controller {
public function
action_index() {
$this->response->body('Book index');
}
public function action_detail() {
$id = $this->request->param('id');
$this->response->body('Your request Book ID:' . $id);
}
}
// End Book
Ta chạy thử 2 link xem được ko?
http://localhost/kohana/book
http://localhost/kohana/book/detail/1
Select
Okie.... ta bắt đầu thao tác database
Để select 1 bảng trong database thì ta làm như sau
DB::select()->from(table);
Giờ ta thử select bảng book ra xem nào ^^!, các bạn thay thế action index thành như sau
public function action_index() {
$query = DB::select()->from('book')->execute()->as_array(NULL);
echo '<pre>';
print_r($query);
echo '</pre>';
}
Và chạy thử link này xem nào -> http://localhost/kohana/book -> ra như vầy okie
Array
(
[0] => Array
(
[book_id] => 1
[book_name] => Book 1
[book_description] => description book 1
[book_price] => 1.2
[member_id_post] => 1
)
[1] => Array
(
[book_id] => 2
[book_name] => Book 2
[book_description] => description book 2
[book_price] => 1.99
[member_id_post] => 2
)
....
)
Ta nhìn vào member_id_post thì ta chẳng biết nó là cái quái gì cả... bây giờ ta join 2 table book và member lại xem sao nhá... các bạn sửa action index lại 1 tí nào
public function action_index() {
$query = DB::select()
->from('book')
->join('member','left')->on('member.member_id', '=', 'book.member_id_post')
->execute()->as_array(NULL);
echo '<pre>';
print_r($query);
echo '</pre>';
}
Và chạy thử link này xem nào -> http://localhost/kohana/book -> lúc này ta có thêm member_name ^^!, bít ai post rồi chứ gì.
->join('member','left')->on('member.member_id', '=', 'book.member_id_post')
Dùng join left và dựa trên 2 khóa member_id của table member bằng với member_id_post của table book
Bây giờ ta select đúng book id của nó lun nào... ^^! Nãy giờ ta lấy toàn bộ book, giờ ta lấy 1 book dựa theo id của nó nào. Sửa action detail lại thành
public function action_detail() {
$id = $this->request->param('id');
$query = DB::select()
->from('book')
->join('member', 'left')->on('member.member_id', '=', 'book.member_id_post')
->where('book.book_id', '=', $id)
->execute()->as_array(NULL);
echo '<pre>';
print_r($query);
echo '</pre>';
}
Chạy thử link -> http://localhost/kohana/book/detail/1 -> xem nó có ra đúng như ý bạn muốn ko nào
Insert
Giờ ta thêm data và bảng book nào
public function action_add() {
$col = array(
'book_name',
'book_description',
'book_price',
'member_id_post'
);
$values = array(
'book add',
'book description add',
'1.59',
'2'
);
$id = DB::insert('book', $col)->values($values)->execute();
echo '<pre>';
print_r($id);
echo '</pre>';
}
Chạy thử link -> http://localhost/kohana/book/add -> nếu xuất ra được vầy là okie
Array
(
[0] => 6 // id book ne
[1] => 1 // so record insert vao
)
Update nào ^^!
public function action_update() {
$id = $this->request->param('id');
$set = array(
'book_name' => rand(5, 10),
'book_description' => rand(10, 20),
);
$query = DB::update('book')->set($set)->where('book_id', '=', $id)->execute();
echo '<pre>';
print_r($query);
echo '</pre>';
}
Chạy link nào -> http://localhost/kohana/book/update/1 -> xuất hiện số 1 la okie ^^
ở đây mình cho update name và description
Delete nào
public function action_delete() {
$id = $this->request->param('id');
$query = DB::delete('book')->where('book_id', '=', $id)->execute();
echo '<pre>';
print_r($query);
echo '</pre>';
}
Chạy link nào -> http://localhost/kohana/book/update/1 -> xuất hiện số 1 la okie ^^
Vậy là xog database ... bài sau mình sẽ viết thành model và chỉ cho các bạn
Giờ bạn thử kết hợp bài này và bài Controller + Template + View - Kohana lại thử xem.
Cho nó có 1 tí giao diện nhìn thân thiện hơn ^^!
Chúc các bạn thành công.