Hướng dẫn how to connect mongodb with laravel 8 - cách kết nối mongodb với laravel 8

Tôi có thể sử dụng MongoDB với Laravel không?

Đúng! Trên thực tế, MongoDB là một lựa chọn tuyệt vời cho các dự án Laravel. Khi chúng tôi bắt đầu với sự phát triển của Laravel bằng MongoDB, chúng tôi sẽ làm việc thông qua một ví dụ về cách xây dựng một ứng dụng blog.

Các lệnh cài đặt được cung cấp ở đây đã được thử nghiệm trên các macOS, nhưng bạn không nên gặp sự cố nếu bạn làm việc trong dòng lệnh Windows hoặc trên máy Linux. Bạn sẽ cần truy cập vào một thể hiện MongoDB đã chạy.

Thiết lập môi trường phát triển Laravel địa phương

(Vui lòng mã theo hoặc tải xuống mã đầy đủ từ repo GitHub này.)

Điều kiện tiên quyết

Vì Laravel là một khung PHP, bạn sẽ cần cài đặt PHP trên máy tính của mình. Quy trình có thể thay đổi tùy thuộc vào hệ điều hành của bạn. Để biết thêm chi tiết về bước này, vui lòng xem tài liệu cài đặt chính thức. Đối với hướng dẫn của chúng tôi, bạn sẽ cần cài đặt Php phiên bản 7.4 trên máy tính của bạn.

Bước tiếp theo là cài đặt Trình soạn thảo. Nhà soạn nhạc là một thư viện và trình quản lý phụ thuộc cho PHP, cho phép bạn thêm các thư viện mà bạn có thể muốn sử dụng trong dự án của mình.

Cài đặt dự án Laravel

Khi bạn đã cài đặt PHP và Composer, bạn có thể cài đặt Laravel.

Từ cửa sổ đầu cuối, nhập lệnh sau:

composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin

Để bắt đầu một dự án Laravel, hãy chạy lệnh sau. Đối với dự án của chúng tôi, chúng tôi sẽ sử dụng

cd myapp
php artisan serve
2 làm tên của ứng dụng của chúng tôi:

laravel new myapp

Điều này tạo ra một thư mục gọi là

cd myapp
php artisan serve
2, với cấu trúc dự án Laravel ban đầu bên trong nó.

Nếu bạn chạy lệnh sau từ thư mục

cd myapp
php artisan serve
2, bạn sẽ thấy một ứng dụng web đang chạy với trang Laravel ban đầu tại http: // localhost: 8000:

cd myapp
php artisan serve

Cài đặt gói Laravel MongoDB

Trước khi chúng tôi có thể cài đặt các thư viện MongoDB cho Laravel, chúng tôi cần cài đặt tiện ích mở rộng PHP cho MongoDB. Chạy lệnh sau:

sudo pecl install mongodb

Bạn cũng sẽ cần đảm bảo rằng tiện ích mở rộng MongoDB được bật trong tệp Php.ini của bạn. Vị trí của tệp Php.ini của bạn sẽ thay đổi tùy thuộc vào hệ điều hành của bạn. Thêm dòng sau vào tệp php.ini của bạn:

extension="mongodb.so"

Cuối cùng, chạy lệnh sau từ thư mục dự án Laravel của bạn để thêm gói MongoDB cho Laravel:

composer require jenssegers/mongodb

Định cấu hình dự án Laravel của bạn để sử dụng MongoDB

Định cấu hình cơ sở dữ liệu MongoDB

Để Laravel giao tiếp với cơ sở dữ liệu MongoDB của bạn, bạn sẽ cần thêm thông tin kết nối cơ sở dữ liệu của mình vào tệp Config \ Database.php trong đối tượng Kết nối của bạn trong dự án Laravel của bạn như trong ví dụ này:config\database.php file under the “connections” object in your Laravel project as shown in this example:

'connections' => [
  'mongodb' => [
        'driver' => 'mongodb',
        'dsn' => env('DB_URI', 'mongodb+srv://username:password@<atlas-cluster-uri>/myappdb?retryWrites=true&w=majority'),
        'database' => 'myappdb',
],

Đảm bảo bao gồm thông tin xác thực chính xác.

Đặt tên kết nối cơ sở dữ liệu mặc định trong cấu hình \ cơ sở dữ liệu.php:config\database.php:

   /*
    |--------------------------------------------------------------------------
| Default Database Connection Name
    |--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
    */

'default' => env('DB_CONNECTION', 'mongodb'),

Xác định các nhà cung cấp

Nếu dự án Laravel của bạn không tự động tải phụ thuộc, bạn cũng có thể cần thêm phần sau vào phần nhà cung cấp trong tệp app.php của bạn:app.php file:

'providers' => [

/*
* Laravel Framework Service Providers...
*/

Jenssegers\Mongodb\MongodbServiceProvider::class,

Ví dụ về Laravel MongoDB crud

Thư viện hùng biện của Laravel cho phép chúng tôi ánh xạ và thực hiện các hoạt động CRUD cơ sở dữ liệu (tạo, đọc, cập nhật, xóa) trực tiếp khỏi các mô hình Laravel.

Giả sử rằng chúng ta có một bộ sưu tập MongoDB có tên là Bài viết, một tài liệu ví dụ trong bộ sưu tập "Bài đăng" có thể trông giống như thế này:

{ 
   "title":"First Blog Post",
   "body" :"Lorem Ipsum, etc.",
   "slug" :"first-blog-post"
}

Nếu bạn đang sử dụng MongoDB Atlas, bạn có thể sử dụng bảng điều khiển Atlas để chèn bản ghi tài liệu này trực tiếp vào cơ sở dữ liệu có tên là MyAPPDB.

Tạo một mô hình, bộ điều khiển, tuyến đường và tệp xem

Bước đầu tiên của chúng tôi sẽ là tạo một mô hình Laravel để đại diện cho các bài đăng trên blog. Từ thư mục dự án, chạy lệnh sau:

laravel new myapp
0

Điều này sẽ tạo một ứng dụng/model/post.php và tệp app/http/bộ điều khiển/postcontroll.php.

Theo mặc định, Artisan tạo ra các mô hình mở rộng mô hình Illuminate \ Databs \ Eloquent \.

Tuy nhiên, đối với MongoDB, chúng tôi muốn mở rộng mô hình hùng biện MongoDB, vì vậy chúng tôi muốn chỉnh sửa ứng dụng/model/post.php. Mô hình bài của chúng tôi nên trông như thế này:

laravel new myapp
1

Lưu ý rằng khi lưu trữ dữ liệu mới, Laravel sẽ tự động tạo bộ sưu tập trong cơ sở dữ liệu MongoDB cho bạn. Theo mặc định, tên thu thập là số nhiều của mô hình được sử dụng (bài đăng trên trường hợp này). Tuy nhiên, bạn có thể ghi đè lên đó bằng cách đặt thuộc tính bộ sưu tập trên mô hình như thế này:

laravel new myapp
2

Nếu bạn đang sử dụng nhiều cơ sở dữ liệu, bạn cũng muốn chỉ định tên kết nối cơ sở dữ liệu trên mô hình như được chỉ ra ở trên.

Tiếp theo, chúng tôi có thể sử dụng mô hình bài đăng của chúng tôi để đọc và hiển thị các bài đăng trên blog của chúng tôi từ cơ sở dữ liệu MongoDB. Trước tiên, hãy để Lôi tạo một chức năng trong PostControll để nhận bài đăng trên blog bằng Slug:

laravel new myapp
3

Trong ví dụ trên, chúng tôi chỉ đang truy xuất bài viết bằng tên Slug của nó. Các mô hình hùng hồn MongoDB hỗ trợ tất cả các phương pháp truy vấn hùng hồn tiêu chuẩn, nhưng chúng cũng hỗ trợ các truy vấn bổ sung dành riêng cho chính MongoDB. Để biết thêm chi tiết, xem https://github.com/jenssegers/laravel-mongodb.

Tiếp theo, hãy để thêm dòng sau vào tệp ROUTES \ Web.php để tạo tuyến đường cho các bài đăng trên blog:

laravel new myapp
4
laravel new myapp
5

Hiển thị dữ liệu bằng chế độ xem Laravel

Cuối cùng, hãy để thêm một chế độ xem để định dạng và tạo kiểu cho dữ liệu bài đăng trên blog để hiển thị. Tên chế độ xem cần phù hợp với chế độ xem mà chúng tôi sử dụng trong bộ điều khiển của chúng tôi. Chúng ta có thể làm điều này bằng cách tạo tệp myApp/resource/lượt xem/post.blade.php với nội dung sau:

laravel new myapp
6

Bây giờ chúng ta có thể xem bài đăng của chúng tôi tại http: // localhost: 8000/post/post-post đầu tiên.

Lưu dữ liệu vào cơ sở dữ liệu MongoDB

Bây giờ, hãy để nói rằng bạn cũng muốn tạo một API mà bạn có thể sử dụng để tạo các bài đăng trên blog trong ứng dụng của mình. Đầu tiên, chúng tôi muốn thêm một phương thức trong PostControll của chúng tôi để lưu trữ một bài đăng:

laravel new myapp
7

Tiếp theo, chúng tôi muốn định cấu hình tuyến tài nguyên cho các bài đăng trong ứng dụng \ Route \ api.php:

laravel new myapp
8

Và cuối cùng, chúng tôi có thể kiểm tra API của mình bằng cách thực hiện yêu cầu POST đến http: // localhost: 8000/API/bài đăng. Ở đây, một ví dụ sử dụng ứng dụng Postman:

Tài liệu

laravel new myapp
9

Hướng dẫn how to connect mongodb with laravel 8 - cách kết nối mongodb với laravel 8

Chúng tôi có thể kiểm tra cơ sở dữ liệu MongoDB và xem bài đăng trên blog đã được lưu trữ:

Hướng dẫn how to connect mongodb with laravel 8 - cách kết nối mongodb với laravel 8

Chúng ta cũng có thể xem bài đăng mới bằng cách truy cập http: // localhost: 8000/post/post-post.

Xóa dữ liệu khỏi cơ sở dữ liệu

Như bạn có thể nhận thấy, nếu một khóa chính không được chỉ định trên mô hình, thuộc tính _ID được sử dụng làm khóa chính cho mỗi bản ghi.

Để xóa bản ghi, chúng tôi có thể sử dụng ID đó để tìm và xóa bản ghi. Vì chúng tôi đã xác định một lộ trình tài nguyên cho các bài đăng, chúng tôi chỉ cần thêm một phương thức phá hủy () vào PostControll:

cd myapp
php artisan serve
0

Sau đó, chúng tôi có thể đưa ra một yêu cầu xóa cho điểm cuối API http: // localhost: 8000/api/post/để xóa một bài đăng.

Cập nhật dữ liệu trong cơ sở dữ liệu

Chúng tôi đã tạo API để tạo và xóa các bài đăng trên blog. Chúng tôi cũng có thể muốn tạo một API để cập nhật các bài đăng trên blog. Điều này rất giống với các ví dụ trước. Chúng ta chỉ cần thêm một phương thức vào PostControll:

cd myapp
php artisan serve
1

Bây giờ, chúng tôi có thể đưa ra yêu cầu đặt cho điểm cuối API http: // localhost: 8000/api/post/với nội dung được cập nhật của bài đăng trên blog.

Hướng dẫn how to connect mongodb with laravel 8 - cách kết nối mongodb với laravel 8

Laravel có thể kết nối với MongoDB không?

Tôi có thể sử dụng MongoDB với Laravel không?Đúng!Trên thực tế, MongoDB là một lựa chọn tuyệt vời cho các dự án Laravel.Khi chúng tôi bắt đầu với sự phát triển của Laravel bằng MongoDB, chúng tôi sẽ làm việc thông qua một ví dụ về cách xây dựng một ứng dụng blog.Yes! In fact, MongoDB is a great choice for Laravel projects. As we get started with Laravel development using MongoDB, we'll work through an example of how to build a blog application.

Laravel có hỗ trợ NoQuery không?

Bạn cần sử dụng một gói.@Nicksurmanidze Nếu MongoDB không phải là một tùy chọn, liệu Laravel có hỗ trợ bất kỳ NoQuery nào khác theo mặc định không?Vâng, nó hỗ trợ Redis.Nhưng MongoDB cũng là một tùy chọn cũng như Elaticsearch nếu bạn cài đặt gói.Yes, it supports Redis. But Mongodb is also an option as well as Elasticsearch if you install a package.

Tôi có thể kết nối PHP với MongoDB không?

Bạn có thể thêm trình điều khiển vào ứng dụng của bạn để làm việc với MongoDB trong PHP.Trình điều khiển PHP MongoDB bao gồm hai thành phần sau: phần mở rộng, cung cấp API cấp thấp và chủ yếu phục vụ để tích hợp libmongoc và libbson với PHP.. The MongoDB PHP Driver consists of the two following components: The extension , which provides a low-level API and mainly serves to integrate libmongoc and libbson with PHP.