Lỗi khi kết nối Laravel và MongoDB
Lúc đầu thì vẫn collection bình thường,sau đó mình có kết nối cả mysql thì bị lỗi này.Nếu mà truy vấn bằng mysql thì lại bình thường.Bác nào biết cách fix không ạ![https://images.viblo.asia/23a4dd53-96ec-493c-8ca3-3267ce179b69.PNG
5 CÂU TRẢ LỜI
- Hình như ở đây bạn bị sai về cú pháp rồi, để query từ bảng thì bạn dùng
DB::table('admin')
còn nếu bạn muốn dùng đến các hàm củaCollection
trong Laravel thì bạn phải thực hiện query ra kết quả rồi và dùng nó với biến$data
dạng như này nhé$data->pluck('id')->all()
. - Trong trường hợp bạn dùng
MongoDB
thì cần tải thêm driver riêng choLaravel
là https://github.com/jenssegers/laravel-mongodb. - Còn nếu bạn dùng 2 loại database cùng lúc thì với mỗi model thì bạn cần khai báo phần connection cho nó nhé https://laravel.com/docs/5.8/eloquent#eloquent-model-conventions mục
Database Connection
Khái niệm Collection trong MongoDB tương đương với Table trong MySQL, nên chắc bạn sử dụng hàm collection()
với DbConnection là Mysql sẽ gặp lỗi đó.
Bạn thử đổi sang dùng hàm table()
xem (suyngam)
Lỗi rất rõ ràng mà bạn.
Hàm collection()
k được định nghĩa.
Có phải bạn muốn gọi hàm connection()
hay không v???
Tham khảo cái này https://meramustaqbil.com/2019/04/28/how-to-use-and-make-multiple-database-connections-in-laravel/ Tốt nhất lên làm cái repository layer nữa rồi khai báo cách khởi tạo nó trong provider. Hoặc nếu dùng trực tiếp từ Model thêm
protected $connection = 'your-connection';
Cảnh báo lỗi:
Lỗi xảy ra tại dùng 349 do Laravel cố gắng gọi đến magic method
khi không tìm thấy hàm nào có tên collection
trong trait DB extend class DatabaseManager. Tức là trait DB
đang không hỗ trợ hàm này
Nguyên nhân truy vấn bình thường
Mình đang đoán do bạn switch giữa 2 db mysql
và mongodb
bằng cách sửa trong file env nhưng chưa xoá cache. Vì vậy hãy đảm bảo chạy php artisan optimize
khi sửa file .env