Làm cách nào tôi có thể sử dụng trình xác thực để kiểm tra xem từng thứ này có tồn tại trong một bảng không?
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
Giải pháp tốt nhất
Xác thực của bạn như được viết sẽ hoạt động. Nếu xác thực tồn tại được sử dụng với một mảng, nó sẽ tự động sử dụng
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
2 cho truy vấn tồn tạiVì vậy, với sự xác thực của bạn như bạn đã viết, việc xác thực sẽ nhận được số lượng bản ghi
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
3 trong đó trường $validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
4 nằm trong danh sách id được cung cấp bởi đầu vào $validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
5 của bạnDo đó, nếu
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
5 của bạn là $validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
7, thì nó sẽ lấy số ở vị trí của $validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
8 và so sánh số đó với số phần tử trong mảng $validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
5 của bạn [là 4]. Nếu số lượng truy vấn >= số lượng mảng, quá trình xác thực sẽ vượt quaHai điều cần cẩn thận ở đây. nếu cột bạn đang kiểm tra không phải là duy nhất hoặc nếu dữ liệu mảng của bạn có các phần tử trùng lặp
Nếu cột bạn đang kiểm tra không phải là duy nhất, thì có thể số lượng truy vấn của bạn sẽ >= số lượng mảng, nhưng không phải tất cả id từ mảng của bạn đều thực sự tồn tại. Nếu mảng của bạn là
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
7, nhưng bảng của bạn có bốn bản ghi với id 1, quá trình xác thực sẽ vượt qua mặc dù các bản ghi với id 2, 3 và 4 không tồn tạiĐối với các giá trị mảng trùng lặp, nếu mảng của bạn là
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
11, nhưng bạn chỉ có một bản ghi có id là 1, thì việc xác thực sẽ không thành công vì số lượng truy vấn sẽ là 1, nhưng số lượng mảng của bạn là 2Để khắc phục hai cảnh báo này, bạn có thể thực hiện xác thực phần tử mảng riêng lẻ. Quy tắc của bạn sẽ trông giống như
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
1Hãy nhớ rằng mỗi phần tử sẽ được xác thực riêng lẻ, vì vậy nó sẽ chạy một truy vấn mới cho từng phần tử trong mảng
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
12Giải pháp liên quan
Php – Cách thiết lập quyền truy cập tệp cho Laravel
Chỉ để nêu rõ ràng cho bất cứ ai xem cuộc thảo luận này. nếu bạn cấp quyền 777 cho bất kỳ thư mục nào của mình, bạn đang cho phép BẤT CỨ AI đọc, viết và thực thi bất kỳ tệp nào trong thư mục đó. điều này có nghĩa là bạn đã cấp cho BẤT KỲ AI [bất kỳ tin tặc hoặc kẻ độc hại nào trên toàn thế giới] quyền tải lên BẤT KỲ tệp, vi-rút hoặc bất kỳ tệp nào khác và SAU ĐÓ thực thi tệp đó
NẾU BẠN ĐANG ĐẶT PHÉP THƯ MỤC CỦA MÌNH THÀNH 777, BẠN ĐÃ MỞ MÁY CHỦ CỦA MÌNH CHO BẤT KỲ AI CÓ THỂ TÌM THƯ MỤC ĐÓ. Đủ rõ ràng chưa ???. ]
Về cơ bản có hai cách để thiết lập quyền sở hữu và quyền của bạn. Bạn tự trao quyền sở hữu hoặc đặt máy chủ web làm chủ sở hữu của tất cả các tệp
Máy chủ web với tư cách là chủ sở hữu [cách mà hầu hết mọi người làm và cách của tài liệu Laravel]
giả sử dữ liệu www [có thể là thứ khác] là người dùng máy chủ web của bạn
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
4nếu bạn làm điều đó, máy chủ web sở hữu tất cả các tệp và cũng là nhóm và bạn sẽ gặp một số vấn đề khi tải tệp lên hoặc làm việc với tệp qua FTP, vì máy khách FTP của bạn sẽ đăng nhập với tư cách là bạn chứ không phải máy chủ web của bạn, vì vậy hãy thêm
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
5Tất nhiên, điều này giả định rằng máy chủ web của bạn đang chạy dưới dạng dữ liệu www [mặc định của Homestead] và người dùng của bạn là ubuntu [thật mơ hồ nếu bạn đang sử dụng Homestead]
Sau đó, bạn đặt tất cả các thư mục của mình thành 755 và các tệp của bạn thành 644. SET quyền đối với tệp
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
6SET quyền thư mục
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
7Người dùng của bạn là chủ sở hữu
Tôi muốn sở hữu tất cả các thư mục và tệp [nó giúp làm việc với mọi thứ dễ dàng hơn nhiều], vì vậy, hãy truy cập thư mục gốc laravel của bạn
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
8$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
9Sau đó, tôi cấp cho cả bản thân và máy chủ web quyền
$validator = Validator::make[$request->all[], [
'array' => 'required|exists:users,id'
]];
0Sau đó cấp cho máy chủ web quyền đọc và ghi vào bộ nhớ và bộ đệm
Cho dù bạn thiết lập nó theo cách nào, thì bạn cần cấp quyền đọc và ghi cho máy chủ web để lưu trữ, bộ đệm và bất kỳ thư mục nào khác mà máy chủ web cũng cần tải lên hoặc ghi [tùy thuộc vào tình huống của bạn], vì vậy hãy chạy các lệnh từ bashy ở trên