/ / Laravel Framework / Comments (2)

Laravel Framework: sử dụng Eloquent ORM

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é:

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:

$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:

$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

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

$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

$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

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

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

// 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

$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

$user->push();

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

$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

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

b. Xóa bằng khóa

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

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

-Kết thúc bài viết: Qua bài viết này mình đã hướng dẫn các bạn có cái nhìn tổng quan về Eloquent ORM trong Laravel Framewok 4.x.Sang bài sau mình sẽ giới thiệu cho các bạn về cách sử dụng Migrations và Schema Builder để thiết kế và quản lý cơ sở dữ liệu



26/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

2 Comments

  1. thuy nt says:
     /  Reply

    mình dùng hàm find($id) hoặc findOrFail($id) đều bị lỗi này NotFoundHttpException in RouteCollection.php line 145:
    help me!

    • nobitacnt says:
       /  Reply

      Bạn paste cả đoạn code mà bạn làm lên để mọi người cùng xem và hỗ trợ chính xác hơn được không

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