laravel+mongodb 增删改查

前言 :先确定好自己使用的哪个版本的 Laravel 框架,再决定 composer 哪一个的 MongoDB,我使用的是 Laravel 8 所以我 composer 了 3.8 的MongoDb

第一步:安装composer包

composer require jenssegers/mongodb:3.8  --ignore-platform-reqs

执行 composer 命令,进行下载

这个时候可能会报错,所以要做以下操作

  1.  php先安装mongodb扩展(连接的服务器或本地需要先安装mongodb)
  2. 下载地址:https://pecl.php.net/package/mongodb
     
  3. 在这里根据你的 PHP 版本进行选择,我的是 7.3.4 的
  4. 将下载到的压缩包内的 php_mongodb.dll 文件复制到 php7.3.4 下的ext文件夹内
  5. 在php.ini中写入extension=mongodb 
  6. cmd 执行 php -v 查看运行是否正常 
  7. 再次使用 composer 命令下载,如果不出意外的话,可以看到:
  8. 这样就是安装成功了
  9. 注册服务 ,在app/config/app.php文件     'providers'=>[
    Jenssegers\Mongodb\MongodbServiceProvider::class

    ],  'aliases'=>[

    'Mongo' => Jenssegers\Mongodb\MongodbServiceProvider::class,

    ]

  10. 修改数据库配置文件 config/database.php 中 

    'mongodb' => [
                'driver'   => 'mongodb',
                'host'     => env('MONGODB_HOST', '127.0.0.1'),
                'port'     => env('MONGODB_POST', '27017'),
                'database' => env('MONGODB_DB', 'phone'),
                'username' => env('MONGODB_USER', ''),
                'password' => env('MONGODB_PASSWORD', ''),
            ],

     

  11. 在 .env 文件中加入

  12. MONGODB_HOST=127.0.0.1
    MONGODB_POST=27017
    MONGODB_DB=phone
    DB_USERNAME=
    DB_PASSWORD=

    接下来就可以在控制器中使用了

laravel8 (增删改查)

控制器

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class IndexController extends Controller
{

    /**
     * 添加页面
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function mongoDbForm(){
        return view('admin/mongoDbForm');
    }

    /**
     * 添加
     * @param Request $request
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function mongoDbAdd(Request $request){
        $post = $request->post();
        $data = [
            'name'=>$post['name'],
            'age'=>$post['age'],
            'price'=>$post['price'],
        ];
        User::userAdd($data);
        return redirect('mongoDbList');
    }

    /**
     * 列表
     * @param Request $request
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function mongoDbList(Request $request){
        $name = $request->get('name');
        $query = User::userList();
        if (!empty($name)){
            $query->where('name','like','%'.$name.'%');
        }
        $data = $query->paginate(5);
        return view('admin/mongoDbList',compact('data','name'));
    }

    /**
     * 删除
     * @param Request $request
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function mongoDbDel(Request $request){
        $id = $request->get('id');
        User::userDel($id);
        return redirect('mongoDbList');
    }
}

model

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;

class User extends Model
{
    use HasFactory;
    protected $connection = 'mongodb';//库名
    protected $collection = 'user';//文档名称
    protected $primaryKey = '_id';//声明主键ID
    protected $fillable = ['id','name','age','price','openid','session_key'];

    public static function userAdd($data){
        return DB::connection('mongodb')->collection('user')->insert($data);
    }

    public static function userList(){
        return DB::connection('mongodb')->collection('user');
    }

    public static function userDel($id){
        return DB::connection('mongodb')->collection('user')->where('_id',$id)->delete();
    }

}

 页面(添加页面)

<form action="mongoDbAdd" method="post">
    <table>
        @csrf
        <tr>
            <td>用户姓名</td>
            <td><input type="text" name="name"></td>
        </tr>
        <tr>
            <td>用户年龄</td>
            <td><input type="text" name="age"></td>
        </tr>
        <tr>
            <td>用户金额</td>
            <td><input type="text" name="price"></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="添加"></td>
        </tr>
    </table>
</form>

页面(列表)

<form action="mongoDbList">
    <input type="text" name="name" value="{{$name}}">
    <input type="submit" value="搜索">
</form>
<table>
    <tr>
        <td>ID</td>
        <td>用户名称</td>
        <td>用户年龄</td>
        <td>用户金额</td>
        <td>操作</td>
    </tr>
    @foreach($data as $val)
    <tr>
        <td>{{$val['_id']}}</td>
        <td>{{$val['name']}}</td>
        <td>{{$val['age']}}</td>
        <td>{{$val['price']}}</td>
        <td>
            <a href="mongoDbDel?id={{$val['_id']}}">删除</a>
        </td>
    </tr>
    @endforeach
</table>
{{$data->appends(['name'=>$name])->links()}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值