Yêu cầu thg 9 3, 2019 4:31 SA 287 1 5
  • 287 1 5
+1

Lỗi khi kết nối Laravel và MongoDB

Chia sẻ
  • 287 1 5

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


Đã trả lời thg 9 3, 2019 4:35 SA
Đã được chấp nhận
+4
  • 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ủa Collection 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 cho Laravelhttps://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
Chia sẻ
Đã trả lời thg 9 3, 2019 4:35 SA
+2

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)

Chia sẻ
Đã trả lời thg 9 3, 2019 4:40 SA
+1

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???

Chia sẻ
Đã trả lời thg 9 3, 2019 6:03 SA
+1

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';
Chia sẻ
Đã trả lời thg 9 3, 2019 6:53 SA
+1

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 mysqlmongodb 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

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí