1. Trang chủ
  2. » Công Nghệ Thông Tin

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

25 20 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 550,78 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Như các bạn đã biết thì Laravel hỗ trợ cho chúng ta nhiều cách để tương tác với cơ sở dữ liệu. Và eloquent ORM là một thế mạnh rất lớn Laravel có trong khi các framework không hỗ trợ. Bài giảng này sẽ trình bày một số nội dung cơ bản về Eloquent ORM trong Laravel, mời các bạn cùng tham khảo.

Trang 1

Eloquent ORM

Nguyễn Hữu Thể

PHÁT TRIỂN PHẦN MỀM NGUỒN MỞ

Trang 3

− 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ươngtá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

Trang 4

Đị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

Trang 5

Eloquent Model: Cấu trúc class

Trang 6

Eloquent Model: Liên kết model với table

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model

{

protected $table = 'my_flights'; }

Sử dụng thuộc tính: $table

Trang 7

Eloquent Model: Primary Keys

• Eloquent cũng coi mỗi table có một column là primary key

• 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

Trang 8

Eloquent Model: Timestamps

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.

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:

Trang 9

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:

Trang 10

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;

}

Trang 11

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(); Lưu (hoặc cập nhật) dữ liệu từ model vào table

$user -> delete(); 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

Trang 12

Ví dụ

Table sanpham đã được tạo trong bài Migration SanPham

Trang 13

Ví dụ - Tạo model sanpham

C:\xampp\htdocs\laravelk>php artisan make:model SanPham

Model created successfully.

namespace App;

use

Illuminate\Database\Eloquent\Model;

class SanPham extends Model {

protected $table = "sanpham" ;

//Tắt timestamp trong table

public $timestamps = false ;

Route::get ( 'model/sanpham/save' , function

() {

$sanpham = new App\SanPham ();

$sanpham-> ten = "Galaxy S7" ;

$sanpham-> soluong = 100;

$sanpham->save();

echo "Đã save()" ; } );

Trang 14

Ví dụ - Test model sanphamTest

Trang 15

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;

} );

Trang 16

Ví dụ - Save model sanpham

Trang 17

Ví dụ - Save model sanpham

Trang 18

Ví dụ - Load all model sanpham

// all

Route::get ( 'model/sanpham/all' , function () {

$sanpham = App\SanPham::all()->toJson();

echo $sanpham;

} );

Trang 19

Ví dụ - Print Array

// Array

Route::get ( 'model/sanpham/all' , function () {

$sanpham = App\SanPham::all()->toArray();

var_dump($sanpham);

} );

Trang 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();

var_dump ( $sanpham );

} );

Trang 21

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' ];

} );

Trang 22

Xóa

// Xóa sản phẩm

Route::get ( 'model/sanpham/delete' , function () {

App\SanPham::destroy(4); } );

Trang 23

Thêm Models

− Để thêm dữ liệu mới vào database:

• Tạo một model instance mới,

• Thiết lập các attributes vào model rồi 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();

Trang 24

Cập nhật Model

− Hàm save() cũng được dùng để cập nhật model đã

tồn tại sẵn trong database.

− Để update:

• Lấy model instance ra trước,

• Thay đổi các attribute,

• Gọi hàm save()

$flight = App\Flight::find(1);

$flight->name = 'New Flight Name';

$flight->save();

Trang 25

Xóa Model

− Để xóa một model, gọi hàm delete trong model instance

$flight = App\Flight::find(1);

$flight->delete();

Ngày đăng: 03/12/2020, 12:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w