Thuộc tính có thể điền trong Laravel là gì?
Khi làm việc với Laravel và Eloquent, bạn có thể tận dụng một loạt các hàm trợ giúp thú vị giúp việc chèn, cập nhật và xóa dữ liệu khỏi cơ sở dữ liệu của bạn trở nên rất dễ dàng Show Hãy bắt đầu với một ví dụ nhanh về cách bạn có thể tạo một bài đăng mới
Điều đó có vẻ đủ đơn giản, phải không? . Bạn có thể tiến thêm một bước và tạo một bài đăng mới như thế này
Rất có thể bạn sẽ gặp lỗi từ ví dụ trước trừ khi bạn cho Mô hình Hùng biện Bài đăng của mình biết giá trị nào được phép 'điền hàng loạt' Nếu bạn định 'gán hàng loạt' biến cho Mô hình bài đăng của mình, bạn cần chỉ định biến nào có thể điền được. Bạn có thể dễ dàng làm điều đó bằng cách thêm một thuộc tính được bảo vệ 0 vào lớp của mình như vậy
Ngoài ra còn có một cách khác mà bạn có thể chỉ định điều này bằng cách sử dụng thuộc tính 1. Theo mặc định, tất cả các cột trong Eloquent Model đều bảo vệ chống lại 'chỉ định hàng loạt', nhưng nếu bạn đặt 2 thành một mảng trống, nó sẽ thông báo rằng bạn có thể 'chỉ định hàng loạt' tất cả các cột
Đảm bảo bạn cẩn thận về việc cho phép tất cả các cột được gán hàng loạt. Bạn sẽ muốn đảm bảo rằng bạn xác minh tất cả các trường mà người dùng đang gửi, nếu không bạn có thể gặp phải một vài lỗ hổng Đây là một ví dụ nhanh
Giả sử bạn đã gửi biểu mẫu tất cả thông tin cần thiết cho một bài đăng, nếu bạn không muốn cho phép người dùng đặt cột 3 thành 0, họ có thể dễ dàng mở Công cụ dành cho nhà phát triển và đưa trường sau vào biểu mẫu của bạn🤩 Nhà tài trợ tuyệt vời của chúng tôi 👇
Bây giờ, khi họ gửi biểu mẫu, bài đăng này sẽ được đặt thành hoạt động. Thay vào đó, nếu 3 được thêm vào mảng 1, điều này sẽ ngăn người dùng "hack biểu mẫu của bạn"Đó là nó. Sử dụng thuộc tính 0 và 1 cho phép bạn chỉ định cột nào trong bảng của mình (Mô hình Eloquent) có thể được gán hàng loạt Gán hàng loạt là một quá trình gửi một mảng dữ liệu sẽ được lưu vào mô hình đã chỉ định cùng một lúc. Nói chung, bạn không cần phải lưu dữ liệu trên mô hình của mình trên cơ sở từng cái một, mà là trong một quy trình duy nhất Chuyển nhượng hàng loạt là tốt, nhưng có một số vấn đề bảo mật đằng sau nó. Điều gì sẽ xảy ra nếu ai đó chuyển giá trị cho mô hình và không có sự bảo vệ, họ chắc chắn có thể sửa đổi tất cả các trường bao gồm cả ID. Điều đó không tốt Giả sử bạn có bảng 'sinh viên', với các trường “student_type, first_name, last_name, dob, Gender”. Bạn có thể muốn gán hàng loạt “first_name, last_name, dob, sex” nhưng bạn muốn bảo vệ student_type khỏi bị thay đổi trực tiếp. Đó là nơi có thể lấp đầy và được bảo vệ Có thể lấp đầy là gì? Có thể điền cho phép bạn chỉ định trường nào có thể gán hàng loạt trong mô hình của bạn. Hãy lấy ví dụ trên, bạn có thể làm điều đó bằng cách thêm biến đặc biệt $fillable vào mô hình. Vì vậy trong mô hình class Student extends Model {protected $fillable = [‘first_name’, ‘last_name’, ‘email’]; //← only the field names inside the array can be mass-assign} Như bạn đã nhận thấy, ' id, student_type ' không được bao gồm, có nghĩa là chúng được miễn Bảo vệ là gì? Guarded là mặt trái của fillable. Nếu có thể điền chỉ định trường nào sẽ được gán hàng loạt, thì được bảo vệ chỉ định trường nào không thể gán hàng loạt. Vì vậy trong mô hình ________số 8Nếu bạn muốn chặn tất cả các trường được gán hàng loạt, bạn có thể làm điều này protected $guarded = [‘*’]; Vì vậy, khi nào bạn sẽ sử dụng có thể lấp đầy hoặc được bảo vệ? Sử dụng có thể điền là tốt khi bạn có 2–10 trường, nhưng nếu bạn có 20–50 trường trong mô hình của mình thì sao? . Tin tôi đi, đó là một công việc khá. Bạn có thể sử dụng “Tôi không nói rằng điều đó không tốt” trong tình huống này, nhưng nếu bạn muốn một cách dễ dàng hơn để bảo vệ nó khỏi sự gán hàng loạt, thì người bảo vệ sẽ thích hợp hơn Những từ cuối Mặc dù $fillable đóng vai trò là "danh sách trắng" gồm các thuộc tính có thể gán hàng loạt, nhưng bạn cũng có thể chọn sử dụng $guarded. Thuộc tính $guarded phải chứa một mảng các thuộc tính mà bạn không muốn gán hàng loạt. Tất cả các thuộc tính khác không có trong mảng sẽ được gán hàng loạt. Vì vậy, chức năng $guarded giống như một “danh sách đen”. Tất nhiên, bạn nên sử dụng $fillable hoặc $guarded — không phải cả hai Cái gì có thể điền và bảo vệ trong Laravel?Trong Laravel, thuộc tính có thể điền được sử dụng để chỉ định các trường sẽ được gán hàng loạt. Các thuộc tính được bảo vệ được sử dụng để chỉ định những trường không thể gán hàng loạt .
Có thể gán hàng loạt nghĩa là gì trong Laravel?Gán hàng loạt là quá trình gửi một mảng dữ liệu sẽ được lưu vào mô hình đã chỉ định cùng một lúc . Nói chung, bạn không cần lưu dữ liệu trên mô hình của mình trên cơ sở từng cái một, mà là trong một quy trình duy nhất.
Cái gì được bảo vệ trong Laravel?Laravel sử dụng protected để bảo vệ bạn khỏi sự xâm phạm vào cơ sở dữ liệu của bạn . Giống như tiêm Sql. Nó cũng chứa các câu lệnh thoát khỏi bất kỳ mối đe dọa nào mà người dùng sẽ chuyển qua các biểu mẫu của bạn. Theo dõi câu trả lời này để nhận thông báo.
ORM trong Laravel là gì?Eloquent là một trình ánh xạ quan hệ đối tượng (ORM) được bao gồm theo mặc định trong khuôn khổ Laravel. ORM là phần mềm hỗ trợ xử lý các bản ghi cơ sở dữ liệu bằng cách biểu diễn dữ liệu dưới dạng các đối tượng, hoạt động như một lớp trừu tượng trên cùng của công cụ cơ sở dữ liệu được sử dụng để lưu trữ dữ liệu của ứng dụng. |