Thông tin tài liệu
PHÁT TRIỂN PHẦN MỀM NGUỒN MỞ Eloquent ORM Nguyễn Hữu Thể Eloquent ❖ ❖ ❖ ❖ Introduction Defining Models Retrieving Models Inserting & Updating Models • Inserts • Updates ❖ Deleting Models • Soft Deleting Eloquent − Cung cấp API ActiveRecord đơn giản tuyệt vời làm việc với database • Mỗi database table có "Model" tương ứng để tương tác với table • Model cho phép bạn query liệu table, chèn thêm liệu Định nghĩa Models − Model nằm thư mục app/, tuỳ chỉnh file composer.json − Kế thừa từ class Illuminate\Database\Eloquent\Model − Câu lệnh model có tên Flight: php artisan make:model Flight − Nếu muốn tạo database migration kèm với model sử dụng them cờ migration -m: php artisan make:model Flight –migration Hoặc php artisan make:model Flight -m Eloquent Model: Cấu trúc class namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { // } 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'; } Eloquent Model: Primary Keys • Eloquent coi table có column primary key tên id • Chúng ta định nghĩa $primaryKey để đổi tên column Ví dụ: $primaryKey = 'userid' • Ngồi ra, Eloquent coi primary key giá trị nguyên tăng dần • Nếu muốn sử dụng primary không tăng dần hay dạng số, cần thay đổi thuộc tính $incrementing = false Eloquent Model: Timestamps • Mặc định, Eloquent cần hai cột created_at updated_at có mặt bảng • Nếu bạn khơng muốn, thiết lập thuộc tính $timestamps 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’ ‘update_at’ table có dùng thuộc tính có tên } Kết nối database Tất Eloquent model sử dụng kết nối database mặc định cấu hình Nếu bạn muốn sử dụng 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'; } Lấy nhiều Models Khi tạo model liên kết đến table, bạn sẵn sàng truy xuất 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 model Cho trước class model User: $user = new User(); Tạo biến đối tượng thuộc lớp Model có echo $user->name; Lấy giá trị thuộc tính model Lấy tồn liệu table $user = User::all(); $user = User::find(giá trị khóa chính); Tìm user theo khóa $user->toJson(); Trả liệu kiểu JSON $user->save(); $user->delete(); Lưu (hoặc cập nhật) liệu từ model vào table Xóa liệu table User::destroy(giá trị khóa chính); table Xóa liệu khóa 11 Ví dụ Table sanpham tạo Migration SanPham 12 Ví dụ - Tạo model sanpham C:\xampp\htdocs\laravelk>php artisan make:model SanPham Model created successfully namespace App; use Route::get ( 'model/sanpham/save', function () { Illuminate\Database\Eloquent\Model; $sanpham = new App\SanPham(); class SanPham extends Model{ $sanpham->ten = "Galaxy S7"; protected $table = "sanpham"; //Tắt timestamp table public $timestamps = false; } $sanpham->soluong = 100; $sanpham->save(); } ); echo "Đã save()"; 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 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(); echo $sanpham [0]['ten']; } ); 21 Xóa // Xóa sản phẩm Route::get ( 'model/sanpham/delete', function () { App\SanPham::destroy(4); } ); 22 Thêm Models − Để thêm liệu vào database: • Tạo model instance mới, • Thiết lập attributes vào model gọi hàm save() namespace App\Http\Controllers; use App\Flight; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class FlightController extends Controller { public function store(Request $request) { // Validate the request $flight = new Flight; $flight->name = $request->name; $flight->save(); } } 23 Cập nhật Model − Hàm save() dùng để cập nhật model tồn sẵn database − Để update: • Lấy model instance trước, • Thay đổi attribute, • Gọi hàm save() $flight = App\Flight::find(1); $flight->name = 'New Flight Name'; $flight->save(); 24 Xóa Model − Để xóa model, gọi hàm delete model instance $flight = App\Flight::find(1); $flight->delete(); 25 ... User::destroy(giá trị khóa chính); table Xóa liệu khóa 11 Ví dụ Table sanpham tạo Migration SanPham 12 Ví dụ - Tạo model sanpham C:xampphtdocslaravelk>php artisan make:model SanPham Model created
Ngày đăng: 30/10/2021, 11:09
Xem thêm: