Mẹo Hướng dẫn dùng assighnment trong PHP
Kinh Nghiệm Hướng dẫn Hướng dẫn dùng assighnment trong PHP 2022
Bùi Văn Quân đang tìm kiếm từ khóa Hướng dẫn dùng assighnment trong PHP được Cập Nhật vào lúc : 2022-12-16 01:26:05 . Với phương châm chia sẻ Thủ Thuật Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi Read tài liệu vẫn ko hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Mình lý giải và hướng dẫn lại nha.Xin chào những bạn, trong những nội dung bài viết trước tôi đã chia sẻ với những bạn về Migration và Seeder trong Laravel - nó là những việc làm thiết yếu khi thao tác với DB, tương hỗ cho việc tạo bảng, quản lý phiên bản, chèn tài liệu một cách thuận tiện nhất. Như vậy sau những bước migration và seeding, thì tất cả chúng ta đã có một cơ sở tài liệu với đầy đủ những bảng và tài liệu trong bảng đó. Trở lại với nội dung bài viết mình yêu thích chia sẻ trong series Laravel và những điều thú vị thì ngày hôm nay mình sẽ chia sẻ cho những bạn cách truy vấn và xử lý tài liệu đang có trong cơ sở tài liệu. Trước hết tất cả chúng ta sẽ tìm hiểu qua quy mô MVC là gì nhé.
Nội dung chính Show- Định nghĩa Model và những thiết lập cơ bảnTên bảngKhóa chính của bảngKết nối DBLấy tài liệu từ DBThêm rằng buộc cho câu truy vấnCollectionsLấy tài liệu một Model/AggregatesNotFound ExceptionInsert và Update ModelsMass UpdatesMass AssignmentDeleting ModelSoft DeletingQuery ScopeGlobal ScopeLocal Scope
Chắc hẳn ai khởi đầu với sự nghiệp làm web cũng không thể không biết quy mô MVC. Mình sẽ nói sơ lược lại một chút ít nhé. MVC(Model- View- Controller) là quy mô phân chia application thành 3 thành phần chính và mỗi thành phần lại sở hữu trách nhiệm riêng của nó:
- Model: chứa những logic trách nhiệm và thao tác với DB.View: thực hiện việc làm hiển thị và tương tác với người tiêu dùng.Controller: làm trách nhiệm điều hướng Một trong những đối tượng tham gia khối mạng lưới hệ thống. Ví dụ như người tiêu dùng có một request lên thì route định tuyến vào controller, thì controller sẽ điều hướng tới cho một Model tương ứng xử lý sau đó kết quả trả về cho Controller , Controller sẽ chuyển đến tài liệu cho View.
Ví dụ
Lý thuyết trên khó hiểu ghia, mình sẽ lấy một ví dụ để những bạn dễ hiểu hơn nhé. Chắc hẳn những bạn hay phải đi uống trà sữa đúng không nào
))) Một ngày đẹp trời mình đi đến 157 Xã Đàn để uống Lee Tee, khi vào quán thì mình sẽ order đồ uống. Mình là người tiêu dùng, và trà sữa Ô Long Kem Cheese Size L full topping là yêu cầu của người tiêu dùng ))). Nhân viên order vui vẻ tươi vui gật đầu(giả sử quán lúc đó có một nhân viên cấp dưới thao tác vừa order vừa pha chế luôn cho khách). Với bạn nhân viên cấp dưới order, trà sữa là cần tuân theo qui trình tiến trình:- Lấy cốcGián tem tên đò uốngPha trà sữaCho toppingĐổ lớp kem cheese lên bề mặtĐóng hộpĐưa đồ cho khách
Não của nhân viên cấp dưới bán trà sữa đong vai trò là controller. Ngay khi mình đến order trà sữa thì nhân viên cấp dưới bán trà sữa đã hiểu và khởi đầu việc làm. Pha trà sữa bản chất cũng như in như pha nhiều chủng loại nước thông thường, có điều nguyên vật liệu và công cụ hoàn toàn rất khác nhau. Bạn nhân viên cấp dưới bán hàng hoàn toàn có thể sử dụng công cụ của shop. Những công cụ đó đóng vai trò là Model gồm có:
- Đôi tay bạn nhân viênNguyên liệu để pha trà sữaMáy pha tràĐá lạnhMáy đóng hộpĐường, topping, chân trâu,...
Cuối cùng cốc trà sữa sau khi đóng hộp mà mình cầm trên tay đóng vai trò là View được làm ra từ những công cụ trong phần Model, chế biến và giao đồ thông qua phần Controller(não của bạn nhân viên cấp dưới).
2. Eloquent ModelORM(Object Relational Mapping) đây là tên gọi gọi chỉ việc ánh xạ những record tài liệu trong hệ quản trị cơ sở tài liệu sang dạng đối tượng mà mã nguồn đang định dạng trong class. Eloquent ORM: Larvel đã sử dụng kỹ thuật ORM giúp lập trình viên thao tác thuận tiện và đơn giản hơn với DB. Trong phần này tất cả chúng ta sẽ nói nhiều đến phần kiến thức và kỹ năng
protected $connection = 'connection-name'; 6 (Model) - là một phần trong quy mô MVC ở trên. Các Model này sẽ thao tác trực tiếp với DB, xử lý logic trách nhiệm và trả về tài liệu cho controller.Định nghĩa Model và những thiết lập cơ bản
Chúng ta sẽ định nghĩa ra model bằng câu lệnh
protected $connection = 'connection-name'; 7 trong command Artisan.php artisan make:model PostSau khi nhấn lệnh thì trong app/Post.php sẽ sinh ra đoạn code sau:
Để tạo model và migration tất cả chúng ta sẽ thêm option protected $connection = 'connection-name'; 8 hoặc protected $connection = 'connection-name'; 9php artisan make:model Post --migration php artisan make:model Post -mCác bạn để ý quan tâm tên model để mapping cho đúng với bảng trong CSDL. Nếu table trong CSDL là
title. ""; 0 thì tên model đặt đúng theo chuẩn là title. "
"; 1.
Tên bảng
Mặc định nếu như bạn đặt tên model là
title. ""; 1 thì laravel sẽ mapping với bảng tên title. "
"; 0. Những nếu bạn muốn đặt tên bảng khác đi nhưng vẫn phải theo đúng quy chuẩn convention đặt tên trong Laravel nhé(snake case). Ví dụ mình không đặt tên title. "
"; 0 nữa mà mình đặt tên là title. "
"; 5 ví dụ điển hình thì biến title. "
"; 6 trong title. "
"; 7 sẽ mapping đúng model với tên bảng tất cả chúng ta khai báo.Khóa chính của bảng
Theo mặc định trong Laravel thì khóa chính của mỗi bảng sẽ là
title. ""; 8. Nhưng đôi lúc tất cả chúng ta muốn thay đổi trường khóa chính này với tên khác ví như thể title. "
"; 9 thì tất cả chúng ta hoàn toàn có thể khai báo qua biến Các bạn để ý quan tâm nhé, kiểu tài liệu của khóa đó đó là Timestamps
Mặc định khi những bạn tạo bảng thì sẽ có 2 trường
Nếu bạn không thích lưu tài liệu của timestamp như mặc định của nó bạn hoàn toàn có thể thay đổi định dạng của nó trong model như sau:protected $dateFormat = 'd-m-Y';Và nếu bạn muốn custom lại tên cột của
Kết nối DBTất cả những Eloquent models sẽ sử dụng DB mặc định khai báo trong file .env, nhưng nếu bạn muốn model này link tới một bảng trong CSDL nào đó thì tất cả chúng ta sẽ set như sau trong model:
protected $connection = 'connection-name';Chú ý
Để chác chắn là model của tất cả chúng ta mapping đúng với table trong CSDL hay chưa thì tất cả chúng ta sẽ test bằng
Nếu trả về Lấy tài liệu từ DBall
Khi tất cả chúng ta đã thiết lập những tham số như trên xong, thì tất cả chúng ta bắt tay vào lấy tài liệu từ DB về. Để lấy tất cả những bản ghi trong 1 table tất cả chúng ta dùng
title. "";
Thêm rằng buộc cho câu truy vấn
Có những trường hợp mà tất cả chúng ta không thiết yếu lấy tất cả những record của table ra, nó làm hiệu năng chương trình của tất cả chúng ta kém. Nên thêm những rằng buộc cho câu truy vấn là rất quan trọng để giảm sút query không thiết yếu và tăng hiệu năng chương trình.
CollectionsVì những hàm của Eloquent như
ChunkNếu bạn muỗn xử lý hàng ngán kết quả từ Eloquent, sử dụng
CursorsHàm
Lấy tài liệu một Model/AggregatesNgoài việc lấy tất cả những records của table bằng hàm
NotFound ExceptionNhưng có những lúc mà bạn muốn bắn ra một exception nếu instance model không tìm thấy. Hàm
Nếu exception mà không được bắt thì một HTTP response 404 sẽ tự động được gửi lại cho user.Aggregates
bạn cũng hoàn toàn có thể sử dụng những
Insert và Update ModelsInsert
Để tạo một bản ghi mới trong table, thì tất cả chúng ta sẽ tạo một model instance, sau đó tất cả chúng ta set giá trị của thuộc tính, sau đó dùng phương thức
Trong ví dụ trên tất cả chúng ta không tạo 2 trường UpdatesHàm
Mass UpdatesNhiều khi tất cả chúng ta cần update nhiều bản ghi một lúc thì tất cả chúng ta sẽ làm sau đây. Ví dụ như tất cả những những bài post chưa pulish thì sẽ được pulish hết.
Hàm Mass AssignmentSau kh i submit form tài liệu lên tất cả chúng ta hoàn toàn có thể ghi tài liệu này vào CSDL bằng đoạn code như sau(ta bỏ qua vấn đề validate tài liệu nhập vào):php artisan make:model Post --migration php artisan make:model Post -m 1Thật ngắn gọn và đơn giản đúng không những bạn, tính năng này gọi là Mass Assignment. Tuy nhiên có một lỗ hổng bảo mật thông tin xảy ra nếu một khách truy cập cố tính gửi tài liệu
Khi đó kẻ muốn phá khối mạng lưới hệ thống của tất cả chúng ta khổng thể gửi thêm input Có hai phương thức tạo bản ghi mới sử dụng Mass Assignment khác là php artisan make:model Post --migration php artisan make:model Post -m 4Một phương thức nữa cũng rất hay dùng đó là :
Deleting ModelĐể xóa bản ghi tài liệu đơn gainr bằng phương pháp tất cả chúng ta gọi đến phương thức
Soft DeletingBây giờ bài toán đặt ra là lúc tất cả chúng ta lỡ tay đã xóa bản ghi khỏi table, giờ đây tất cả chúng ta muốn lấy lại nó(khoc). Nhưng không sao, Laravel có cơ chế tương hỗ người tiêu dùng khi lỡ tay xóa một bản ghi hoàn toàn có thể lấy lại được đó đó đó là soft delete (xóa mềm). Tức là tưởng xóa những thực chất không xóa
. Thực chất là tất cả chúng ta chỉ thêm một trường Trong file migration tạo bảng title. ""; 0 bạn nhớ thêm Để truy vấn những bản ghi đã xóa thì tất cả chúng ta sử dụng trái lại nếu bạn muốn truy vấn kết quả từ những bản ghi mà đã xóa mêm thì bạn sử dụng phương thức Đôi lúc bạn sẽ muốn tất cả những bạn ghi đã xóa mềm rồi quay lại như trước. sử dụng phương thức Chú ý, để xóa vĩnh viễn bản ghi dùng phương thức Query Scope
Vấn đề đặt ra là, nhiều khi một rằng buộc nào đó được sử dụng rất nhiều trong những câu truy vấn ở nhiều controller. Vì thế
Global ScopeVới phạm vi biến cục thì định nghĩa scope này sẽ áp dụng cho một Model và những truy vấn liên quan đến nó sẽ được áp dụng thêm rằng buộc. Sau đây mình sẽ lấy một ví dụ cho những bạn xem cách khai báo
Để đăng ký global scope thì tất cả chúng ta sẽ override lại phương thức Và khi ta sử dụng truy vấn 200000 mới được lấy ra. Ngoài ra những bạn còn tồn tại thể định nghĩa global scope bằng Closure.Nếu bạn muốn truy cập mà không biến thành ảnh hưởng nào từ global scope thì tất cả chúng ta hoàn toàn có thể sử dụng phương thức Local ScopeKhi những bạn dùng chỉ việc gọi đến EventsEloquent bắn ra một số trong những những events: creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored. Các bạn hoàn toàn có thể tìm thấy trong
Sử dụng những events của Eloquent này rất tiện dụng, ví dụ như khi bạn tạo ra một chương trình quảng cáo, thi sau khi bạn ObserversNếu tất cả chúng ta cần listen nhiều sự kiện trong model thì bạn cần tạo một
Post a Comment