Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
465,15 KB
Nội dung
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