Trong ví dụ mã cuối cùng của bạn, loại $user
là gì Biến đổi? Tôi cho rằng nó có thể là một chuỗi nếu đó là một tham số định tuyến và đến từ URI. Bạn có thể sử dụng var_dump()
để nhận loại và giá trị trong một lần chụp.
Dựa trên nhận xét trước đó, bạn nói rằng tài liệu Scripts có các trường sau:
- _id
- tên (chuỗi)
- mô tả (chuỗi)
- chỉ mục (số nguyên)
- user_id (số nguyên)
Nếu index
trong tài liệu MongoDB của bạn là một số nguyên, bạn sẽ cần sử dụng một số nguyên trong truy vấn. Ví dụ:findOneByIndex('1')
sẽ không khớp với tài liệu có số nguyên 1
trong lĩnh vực của nó. Phương pháp hay nhất ở đây là truyền
giá trị của bạn vào loại thích hợp trước khi truy vấn. Tốt nhất bạn nên ngừng dựa vào các phương thức DocumentRepository kỳ diệu và xác định rõ ràng findBy
của riêng bạn phương pháp thực hiện đúc nội bộ. Sau đó, bộ điều khiển của bạn có thể truyền trực tiếp một chuỗi số từ tham số định tuyến hoặc tham số yêu cầu và không phải lo lắng về việc tự thực hiện ép kiểu số nguyên.
Ngoài ra, để nhận xét về ví dụ mã ban đầu của bạn:
$script = $repository->findOneByIndex($user);
Điều này dành cho mẫu định tuyến platform/designing/users/{user}/showuser
. Bạn đã nói rằng điều này không tìm thấy kết quả. Tôi giả sử là $user
đối số cho bộ điều khiển của bạn là một ID người dùng. Nếu đúng như vậy, tại sao bạn lại truy vấn trên index
trường thay vì user_id
?