MongoDB và Laravel 9 . Cài đặt môi trường ,Kết nối ,demo trực tiếp dễ hiểu nhất

Như các bạn đã biết ưu nhược điểm khi sử dụng mongodb nên ở bài viết này mình sẽ không nói tới vấn đề đó nữa .Thay vào đó chúng ta sẽ bắt tay vào quá trình cài đặt và sử dụng mongodb với laravel 9

1 Cài đặt môi trường mongodb trên máy tính : 

Ở đây mình sử dụng windows và xampp nên mình sẽ cài đặt thêm phần extention mongodb cho php .Các bạn truy cập vào https://pecl.php.net/package/mongodb để download dll theo bản php mà mình sử dụng 

php version

Ở đây mình sài bản php 8.1.5 nên mình sẽ donwload 

Tiếp theo mình download về và copy file mongodb.dll vào thư mục C:\xampp81\php\ext 

Edit lại file php.ini

Sau đó reset lại php để máy nhận driver mongodb

Vậy là xong việc cài đặt môi trường tiếp theo chúng ta đế việc cài đặt mongodb với laravel 9 

2 Kết nối mongodb và laravel 9

Đầu tiên bạn cần xem video sau : https://s.lashare.info/Qz86yK để tạo 1 database mongodb cloud 

Tiếp theo bạn download package này giúp kết nối laravel và mongodb với command sau :

composer require jenssegers/mongodb

Các hàm function thì bạn có thể truy cập https://github.com/jenssegers/laravel-mongodb để có thể đọc chi tiết về phương thức hoạt động cũng như là các truy vấn sử dụng

Sau khi cài đặt package này xong chúng ta cấu hình kết nối mongodb .Vào file laravelmongodb/config/database.php

'connections' => [

     .............

        'mongodbcloud1' => [
            'driver' => 'mongodb',
            'dsn' => 'mongodb+srv://anhhien:[email protected]/?retryWrites=true&w=majority',
            'database' => 'laravelmongodb',
        ],

        'mongodb' => [
            'driver' => 'mongodb',
            'host' => env('DB_MG_HOST', '127.0.0.1'),
            'port' => env('DB_MG_PORT', 27017),
            'database' => env('DB_MG_DATABASE', 'mongodb'),
            'username' => env('DB_MG_USERNAME', ''),
            'password' => env('DB_MG_PASSWORD', '')
        ],


      ..............
],

Các bạn lưu ý ở đây mình cấu hình cả từ cloud và từ localhost .Cloud thì bạn vào trình quản lý lấy phương thứ dns kết nối 

Tiếp theo chúng ta chạy command sau để laravel auto tự động tạo cho ta 1 Demo 

php artisan make:model Post --all

Ở phần model Post chúng ta code như sau :


namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
//use Illuminate\Database\Eloquent\Model;
use Jenssegers\Mongodb\Eloquent\Model;
class Post extends Model
{
    use HasFactory;
    protected $fillable=['title','content'];
}

Migration bạn có thể không cần tạo trong khi dùng mongodb

Tiếp theo phần Controller : app/Http/Controllers/PostController.php

namespace App\Http\Controllers;
use App\Models\Post;
use App\Http\Requests\StorePostRequest;
use App\Http\Requests\UpdatePostRequest;

class PostController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $data = Post::all();
        return view('post.index',compact('data'));
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \App\Http\Requests\StorePostRequest  $request
     * @return \Illuminate\Http\Response
     */
    public function store(StorePostRequest $request)
    {
        Post::create($request->all());
        return redirect()->route('post.index');

    }
}

Ở phần blade resources/views/post/index.blade.php  chúng ta tạo 1 form đơn giản

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="container">

    <h3 style="text-align: center">DEMO CONNECT MONGODB VÀ LARAVEL 9 TẠI <a href="https://lashare.info" target="_blank">LASHARE.INFO </a></h3>
    <form method="post" action="{{route('post.store')}}">
        @csrf
        <div class="form-group">
            <label for="title">Tiêu đề</label>
            <input type="text" class="form-control" id="title" name="title" placeholder="Title">

        </div>
        <div class="form-group">
            <label for="exampleInputPassword1">Content</label>
            <input type="text" class="form-control" id="content" name="content" placeholder="Content">
        </div>
        <button type="submit" class="btn btn-primary">Gửi</button>
    </form>
    <h3 style="text-align: center">đã nhập</h3>
    <table class="table">
        <thead>
        <tr>
            <th scope="col">#</th>
            <th scope="col">Title</th>
            <th scope="col">Content</th>

        </tr>
        </thead>
        <tbody>
        @foreach($data as $key=>$item)
        <tr>
            <th scope="row">{{$key}}</th>
            <td>{{$item->title}}</td>
            <td>{{$item->content}}</td>


        </tr>
        @endforeach

        </tbody>
    </table>
</div>

Tiếp theo cấu hình router cho demo 

Route::resource('post',\App\Http\Controllers\PostController::class);

Chạy chương trình với lệnh 

php artisan serve

Truy cập http://127.0.0.1:8000/post để xem kết quả 

Link download code ở phía dưới để các bạn tham khảo nhé