Bài giảng Phát triển phần mềm nguồn mở - Bài 12: Eloquent ORM - Nguyễn Hữu Thể

PHÁT TRIỂN PHẦN MỀM NGUỒN MỞ  
Eloquent ORM  
Nguyễn Hữu Thể  
Eloquent  
− Cung cấp một API ActiveRecord đơn giản và tuyệt  
vời khi làm việc với database.  
• Mỗi database table sẽ có một "Model" tương ứng để tương  
tác với table đó.  
• Model cho phép bạn query dữ liệu trong table, cũng như  
chèn thêm các dữ liệu mới.  
3
Định nghĩa Models  
− Model nằm trong thư mục app/, có thể tuỳ chỉnh trong file  
composer.json.  
− Kế thừa từ class Illuminate\Database\Eloquent\Model.  
− Câu lệnh một model có tên Flight:  
php artisan make:model Flight  
− Nếu muốn tạo database migration đi kèm với model thì sử  
dụng them cờ --migration hoặc -m:  
php artisan make:model Flight –migration  
Hoặc  
php artisan make:model Flight -m  
4
Eloquent Model: Cấu trúc class  
namespace App;  
use Illuminate\Database\Eloquent\Model;  
class Flight extends Model  
{
//  
}
5
Eloquent Model: Liên kết model với table  
Sử dụng thuộc tính: $table  
namespace App;  
use Illuminate\Database\Eloquent\Model;  
class Flight extends Model  
{
//Kết nối model với table có tên my_flights  
protected $table = 'my_flights';  
}
6
Eloquent Model: Primary Keys  
• Eloquent cũng coi mỗi table có một column là primary key  
tên là id.  
• Chúng ta có thể định nghĩa một $primaryKey để đổi tên  
column này.  
Ví dụ: $primaryKey = 'userid'  
• Ngoài ra, Eloquent cũng coi primary key là một giá trị nguyên  
tăng dần.  
• Nếu muốn sử dụng primary không tăng dần hay không  
phải là dạng số, cần thay đổi thuộc tính  
$incrementing = false.  
7
Eloquent Model: Timestamps  
• Mặc định, Eloquent cần hai cột created_at và updated_at  
có mặt trong các bảng.  
• Nếu bạn không muốn, thiết lập thuộc tính $timestamps  
trong model thành false:  
namespace App;  
use Illuminate\Database\Eloquent\Model;  
class Flight extends Model  
{
protected $table = 'my_flights';  
public $timestamps = false; //Tắt/bật chế độ tự động quản lý  
‘created_at’ và ‘update_at’ nếu table có dùng 2 thuộc tính có tên này.  
}
8
Kết nối database  
Tất cả các Eloquent model sẽ sử dụng kết nối database mặc  
định được cấu hình. Nếu bạn muốn sử dụng một kết nối khác  
cho model, sử dụng thuộc tính $connection:  
namespace App;  
use Illuminate\Database\Eloquent\Model;  
class Flight extends Model  
{
protected $connection = 'connection-name';  
}
9
Lấy nhiều Models  
Khi đã tạo được một model và đã liên kết đến table,  
bạn có thể sẵn sàng truy xuất dữ liệu từ database.  
use App\Flight;  
$flights = App\Flight::all();  
foreach ($flights as $flight)  
{
echo $flight->name;  
}
10  
Các phương thức trong model  
Cho trước class model User:  
$user = new User(); Tạo 1 biến đối tượng thuộc lớp Model đã có  
echo $user->name; Lấy giá trị thuộc tính của model  
$user = User::all(); Lấy toàn bộ dữ liệu trong table  
$user = User::find(giá trị khóa chính); Tìm user theo khóa chính  
$user->toJson();  
Trả dữ liệu kiểu JSON  
$user->save();  
$user->delete();  
Lưu (hoặc cập nhật) dữ liệu từ model vào table  
Xóa dữ liệu trong table  
User::destroy(giá trị khóa chính);  
Xóa dữ liệu bằng khóa chính  
trong table  
11  
Ví dụ  
Table sanpham đã được tạo trong bài Migration SanPham  
12  
Ví dụ - Tạo model sanpham  
C:\xampp\htdocs\laravelk>php artisan make:model SanPham  
Model created successfully.  
Route::get ( 'model/sanpham/save', function  
namespace App;  
() {  
use  
Illuminate\Database\Eloquent\Model;  
class SanPham extends Model{  
protected $table = "sanpham";  
$sanpham = new App\SanPham();  
$sanpham->ten = "Galaxy S7";  
$sanpham->soluong = 100;  
$sanpham->save();  
//Tắt timestamp trong table  
echo "Đã save()";  
public $timestamps = false;  
}
} );  
13  
Ví dụ - Test model sanpham  
Test  
14  
Ví dụ - Save model sanpham  
// Save có tham số  
Route::get ( 'model/sanpham/save/{ten}', function ($ten) {  
$sanpham = new App\SanPham ();  
$sanpham->ten = $ten;  
$sanpham->soluong = 100;  
$sanpham->save ();  
echo "Đã save() " . $ten;  
} );  
15  
Ví dụ - Save model sanpham  
16  
Ví dụ - Save model sanpham  
17  
Ví dụ - Load all model sanpham  
// all  
Route::get ( 'model/sanpham/all', function () {  
$sanpham = App\SanPham::all()->toJson();  
echo $sanpham;  
} );  
18  
Ví dụ - Print Array  
// Array  
Route::get ( 'model/sanpham/all', function () {  
$sanpham = App\SanPham::all()->toArray();  
var_dump($sanpham);  
} );  
19  
Ví dụ - Get Data  
// Lấy sản phẩm có tên = "IPhone 7"  
Route::get ( 'model/sanpham/ten', function () {  
$sanpham = App\SanPham::where('ten','IPhone 7')->get()-  
>toArray();  
var_dump ( $sanpham );  
} );  
20  
Tải về để xem bản đầy đủ
pdf 25 trang yennguyen 20960 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phát triển phần mềm nguồn mở - Bài 12: Eloquent ORM - Nguyễn Hữu Thể", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_phat_trien_phan_mem_nguon_mo_bai_12_eloquent_orm_n.pdf