/ / Laravel Framework / Comment (1)

Laravel Framework: Kết nối cơ sở dữ liệu

Ở bài trước, chúng ta đã có dịp đề cập về Controller trong Laravel Framework. Trong bài này, mình sẽ tiếp tục hưỡng dẫn các bạn thao tác với mô hình cơ sở dữ liệu. Từ đó, chúng ta có thể tiến tới viết ứng dụng thực tế trên nền Laravel Framework.
– Laravel kết nối tới cơ sở dữ liệu và chạy truy vấn cực kỳ đơn giản. Cấu hình nằm tại file app/config/database.php. Trong file này thì định nghĩa tất cả những loại kết nối cơ sở dữ liệu, tât nhiên là chúng cũng có loại cơ sở kết nối mặc định. Những ví dụ dưới đây được áp dụng cho tất cả những loại cơ sở dữ liệu mà được cung cấp trong file này.Hiện tại thì Laravel hổ trợ những hệ thống cơ sở dữ liệu sau: MySQL, Postgres, SQLite, và SQL Server.

Cấu hình kết nối cơ sở dữ liệu trong Laravel Framework

– Các bạn mở file app/config/database.php và tìm tới dòng cấu hình

        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'laravel',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

Với đoạn cấu hình trên thì các bạn cần quan tâm cho mình 4 thông số cấu hình sau:

  1. host: Cấu hình host,các bạn giữ nguyên là localhost
  2. database: Cấu hình tên cơ sở dữ liệu mà bạn đang sử dụng
  3. username: Tài khoản có quyền truy cập vào cơ sở dữ liệu
  4. password: Mật khẩu của tài khoản ở trên

Do mình đang sử dụng Xampp lên mặc định username = 'root'password = ''
Để phục vụ cho những đoạn code test này mình sẽ tạo 1 bảng dữ liệu sau:

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(128) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=12 ;

Thực hiện chạy câu lệnh truy vấn

Sau khi đã kết nối vào hệ thống, tiếp đến ta tiến hành thực hiện chạy thử các câu truy vấn sau để thử nghiệm nhé.
1.Chạy câu lệnh truy vấn dữ liệu

$results = DB::select('select * from users where id = ?', array(1));

Vơi phương thức selectchúng ta sẽ lấy ra được dữ liệu trả về dạng mảng
2.Chạy câu lệnh thêm dữ liệu vào cơ sở dữ liệu

DB::insert('insert into users (id, name) values (?, ?)', array(1, 'hocphp'));

3.Chạy câu lệnh cập nhật dữ liệu

DB::update('update users set name = "nobitacnt" where id = ?', array('1'));

4.Chạy câu lệnh xóa dữ liệu

DB::delete('delete from users');

Ghi chú: Câu lệnh insert và câu lệnh delete luôn trả về con số record bị ảnh hưởng
5.Chạy câu lệnh xóa bảng

DB::statement('drop table users');

Database Transactions

Để thao tác những câu lệnh bên trong transaction cơ sở dữ liệu, bạn có thể dùng phương thức transaction

DB::transaction(function()
{
    DB::table('users')->update(array('id' => 1));

    DB::table('posts')->delete();
});

Ghi chú: Bất kỳ câu lệnh nào cũng được đưa vào transaction, và transaction cũng sẽ thực thi rollback một cách tự động
1. Để bắt đầu 1 transaction ta thực hiện

DB::beginTransaction();

2. Bạn cũng có thể rollback qua phương thức

DB::rollback();

3. Cuối cùng thì bạn cần commit nó lên

DB::commit();

Accessing Connections

Khi mà bạn sử dụng nhiều hơn 1 cơ sở dữ liệu và muốn thực hiện truy vấn thì các bạn có thể sử dụng phương thức DB::connection
Ví dụ mình có cấu hình như sau,với 2 cơ sở dữ liệu

        //cơ sở dữ liệu 1,là chính
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'laravel',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
        //cơ sở dữ liệu 2
        'mysql2' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'laravel2',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

Và kết nối mặc định của chúng ta sẽ kết nối tới cơ sở dữ liệu mysql,còn trong trường hợp muốn kết nối tới cơ sở dữ liệu 2 ta sử dụng:

$users = DB::connection('mysql2')->select('select * from user');
print_r($users);

– Kết thúc bài viết: Qua bài viết này mình đã hướng dẫn cho các bạn cấu hình cơ sở dữ liệu cũng như có thể thực hiện được những câu lệnh truy vấn đơn giản.Ngoài ra trong Laravel còn rất nhiều cách để truy vấn cũng như làm việc với cơ sở dữ liệu.Sang bài sau mình sẽ giới thiệu cho các bạn về Query Builder trong Laravel Framework



25/09/2014
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

One comment

  1. Delores says:
     /  Reply

    Thanks Martha tami_lyn, A fellow Minnesotan eh! Yeah, we have a lake or two Th21r#8ey7;&e usually frozen though Not sure how I feel about Pawlenty as a running mate for Romney, that can be a tough road for anyone. Thats as far as I’ll go talking politics here, lol, we got enough subjects cooking

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL