Eloquent ORM trong Laravel

Ở trong bài trước chúng mình đã tìm hiểu về cách tạo Model cũng như cách cấu hình Model trong Laravel thế nào nhưng chưa được ứng dụng vào thực tế. Thế nên bài này chúng mình sẽ áp dụng vào thực tế cho các bạn hiểu hơn cách sử dụng Model nhé. Bài viết này sẽ hướng dẫn mọi người truy vấn cơ sở dữ liệu trong Model với Eloquent ORM của Laravel.

1. Cách gọi Model.

Để gọi Model trong Controllers thì bắt buộc chúng ta phải gọi namespace của model đó trong Controllers. 

VD: mình muốn gọi Model Sinhvien trong homecontroller thì phải gọi use App\Sinhvien ;

<?php
namespace App\Http\Controllers;
use App\Sinhvien ;
class homecontroller extends Controller
{
   Sinhvien::all();
}

Hoặc

<?php
namespace App\Http\Controllers;
use App;
class homecontroller extends Controller
{
   App\Sinhvien::all();
}

Còn nếu muốn gọi model trong Route thì các bạn không cần gọi namespace mà các bạn có thể dùng luôn với cú pháp.

App\TenModel::someThing;

VD: mình muốn gọi Model news trong route.

App\Sinhvien::all();

2. Các câu truy vấn hay dùng trong Eloquent ORM.

Chú ý: Tất cả các cú pháp dưới đây mình lấy Sinhvien model Làm mẫu nhé

Lấy ra dữ liệu trong bảng.

Lấy ra tất cả dữ liệu trong bảng.

Sinhvien::all();

Để minh họa ví dụ này chúng ta tạo controller sinhviencontroller.php có nội dung như sau:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Sinhvien;
class sinhviencontroller extends Controller
{
    //
    public function index() {
    $users = Sinhvien::all();
    return view('stud_view',['users'=>$users]);
    }

}

Để hiển thị dữ liệu chúng ta tạo view có tên stud_view.blade.php trong resources\views với nội dung như sau:

<html>  
   <head>
      <title>View Student Records</title>
   </head>  
   <body>
      <table border = 1>
         <tr>
            <td>ID</td>
            <td>Name</td>
         </tr>
         @foreach ($users as $user)
         <tr>
            <td>{{ $user->ID}}</td>
            <td>{{ $user->Name}}</td>
         </tr>
         @endforeach
      </table>
   </body>
</html>

Đừng quên khai báo route xemsinhvien trong routes/web.php

Route::get('xemsinhvien','sinhviencontroller@index');

Xong rồi chúng ta cùng xem kết quả nhé:

http://localhost:8000/xemsinhvien


Lấy ra một dòng dữ liệu thông qua khóa chính.

Sinhvien::find(1);

Hoặc

Sinhvien::take(1)->get();

Truy vấn điều kiện.

+ Bằng:

Sinhvien::where('id', 5)->get();

+ Lớn hơn, nhỏ hơn,.. (giống Query Buider)

Sinhvien::where('id', '>', '5')->get();
Sinhvien::where('id', '<', '5')->get();

Chọn cột dữ liệu.

Sinhvien::select('id', 'title')->get();

Đếm dữ liệu.

Sinhvien::all()->count();

Thêm dữ liệu.

$news = new Sinhvien();
$news->Name= "Hoang Dung";
$news->save();

Ở trên mình đã thêm vào cột Name nội dung là  'Hoang Tiep'

Sửa dữ liệu.

Ví Dụ mình muốn sửa Name của bảng Sinhvien có id =1.

$update= Sinhvien::find(1);
$update->title = 'Au Duong Phong';
$update->save();

Hoặc

Sinhvien::where('id', 1)->update(['Name' => 'Au Duong Phong']);

Xóa

Cách 1:

$del_sinhvien= Sinhvien::find(1);
$del_sinhvien->delete();

Cách 2:

Sinhvien::destroy(1);
//or
Sinhvien::destroy(1, 2);
//or
Sinhvien::destroy([1, 2, 3]);
//or
Sinhvien::destroy(array(1, 2, 3));

Trong đó: 1, 2, 3 là các id(primary) của bảng cần truy vấn.

Cách 3:

Sinhvien::where('id', 1)->delete();

3. Lời kết.

Phần trên mình đã trình bày cho các bạn về Eloquent ORM trong Laravel rồi, đây là một phần cũng rất là quan trọng trong project nên mình mong các bạn cố gắng đọc cho kĩ để hiểu hơn về nó.

Bình luận