[Laravel] Sử dụng Eloquent ORM

Bởi Thu Ton vào January 2016

Như các bạn biết trong Laravel Framework hỗ trợ cho chúng ta rất nhiều cách để có thể làm việc với cơ sở dữ liệu.Trong bài trước mình đã giới thiệu cho các bạn về Query Builder.Hôm nay mình sẽ giới thiệu cho các bạn về Eloquent ORM và đây cũng chính là 1 thế mạnh trong Laravel Framework mà 1 vài framework khác không hỗ trợ.Trước khi vào bài viết này thì các bạn cần cấu hình kết nối cơ sở dữ liệu trong ứng dụng trước nhé.Để sử dụng được Eloquent ORM các bạn cần chú ý tới những vấn đề đơn giản sau:
+ Tất cả các file phải được viết trong thư mục app/models
+ Các file model phải được kế thừa từ lớp Eloquent
Và chúng ta sẽ đi tìm hiểu các phương thức quan trọng trong lớp Eloquent này nhé

Sử dụng Eloquent ORM trong Laravel Framework

Trước tiên mình sẽ tạo 1 file model có tên User.php với nội dung sau nhé:

1
2
3
class User extends Eloquent {
   protected $table = 'users';
}

+ Khi model được định nghĩa là chúng ta có thể thao tác trên nó,và lớp model đều phải kế thừa từ lớp Eloquent
+ Thuộc tính $table sẽ khai báo bảng dữ liệu mà ta sẽ thao tác.
+ Lưu ý rằng cột updated_atcreated_at nên được tạo tự động, nếu bạn không muốn nó tạo tự động ngày giờ thì bạn có thề đưa thuộc tính $timestamps về false nhé.

1.Lấy dữ liệu

a. Lấy tất cả dữ liệu trong bảng users:

1
2
3
4
5
6
$users = User::all();
foreach ($user as $row)
{
   echo $row->name.'
';
}

b. Lấy 1 dòng dữ liệu thông qua khóa chính:

1
2
$user = User::find(1);
echo $user->name;

– Nếu không lấy được dữ liệu nào trả về từ khóa chính này thì kết quả sẽ là NULL
– Đề đăng ký xử lý lỗi thì ta phải kích hoạt ModelNotFoundException

1
2
3
4
5
use Illuminate\Database\Eloquent\ModelNotFoundException;
App::error(function(ModelNotFoundException $e)
{
    return Response::make('Not Found', 404);
});

c.Truy vấn sử dụng Eloquent Models

1
2
3
4
5
$users = User::where('id', '>', 100)->take(10)->get();
foreach ($users as $user)
{
    var_dump($user->name);
}

d. Bạn cũng có thể sử dụng hàm trong query builder

1
$count = User::where('id', '>', 100)->count();

+ Phương thức count() sẽ trả về tống số dòng tìm thấy phù hợp với câu điều kiên (id > 100)

2.Thêm dữ liệu (Insert)

a. Đề tạo một record mới trong bảng CSDL, đơn giản bạn tạo một thực thể của model và gọi phương thức save

1
2
3
$user = new User;
$user->name = 'Nobita';
$user->save();

b. Sử dụng phương thức Create

1
2
3
4
5
6
7
8
// Create a new user in the database...
$user = User::create(array('name' => 'John'));
// Retrieve the user by the attributes, or create it if it doesn't exist...
$user = User::firstOrCreate(array('name' => 'John'));
// Retrieve the user by the attributes, or instantiate a new instance...
$user = User::firstOrNew(array('name' => 'John'));

3.cập nhật dữ liệu (Update)

a. Đề cập nhật một Model, bạn có thể truy vấn nó, thay đổi thuộc tính và lưu nó lại thông qua khóa chính

1
2
3
$user = User::find(1);
$user->name = 'Nobita';
$user->save();

b. Đôi khi bạn muốn lưu không chỉ nó, mà toàn bộ những gì liên quan tới nó thì bạn sử dụng phương thức push

1
$user->push();

c. Bạn có thể chạy câu lệnh update để truy vấn model theo điều kiện

1
$affectedRows = User::where('id', '>', 100)->update(array('status' => 2));

4.Xóa dữ liệu (Delete)

a. Để xóa một record, đơn giản bạn gọi phương thức delete dựa vào khóa chính của dữ liệu

1
2
$user = User::find(1);
$user->delete();

b. Xóa bằng khóa

1
2
3
User::destroy(1);
User::destroy(array(1, 2, 3));
User::destroy(1, 2, 3);

c. Tất nhiên, bạn cũng có thể xóa theo kiểu query

1
$affectedRows = User::where('id', '>', 100)->delete();

– See more at: http://hocphp.info/laravel-framework-su-dung-eloquent-orm/#sthash.4yN8K38L.dpuf