Header Ads Widget

Kết nối cơ sở dữ liệu trong laravel

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
1
2
3
4
5
6
7
8
9
10
        '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' và 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:
1
2
3
4
5
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
1
$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
1
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
1
DB::update('update users set name = "nobitacnt" where id = ?'array('1'));
4.Chạy câu lệnh xóa dữ liệu
1
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
1
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
1
2
3
4
5
6
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
1
DB::beginTransaction();
2. Bạn cũng có thể rollback qua phương thức
1
DB::rollback();
3. Cuối cùng thì bạn cần commit nó lên
1
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//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:
1
2
$users = DB::connection('mysql2')->select('select * from user');
print_r($users);

Nhận xét