前言 :先确定好自己使用的哪个版本的 Laravel 框架,再决定 composer 哪一个的 MongoDB,我使用的是 Laravel 8 所以我 composer 了 3.8 的MongoDb
第一步:安装composer包
composer require jenssegers/mongodb:3.8 --ignore-platform-reqs
执行 composer 命令,进行下载
这个时候可能会报错,所以要做以下操作
- php先安装mongodb扩展(连接的服务器或本地需要先安装mongodb)
- 下载地址:https://pecl.php.net/package/mongodb
- 在这里根据你的 PHP 版本进行选择,我的是 7.3.4 的
- 将下载到的压缩包内的 php_mongodb.dll 文件复制到 php7.3.4 下的ext文件夹内
- 在php.ini中写入extension=mongodb
- cmd 执行 php -v 查看运行是否正常
- 再次使用 composer 命令下载,如果不出意外的话,可以看到:
- 这样就是安装成功了
- 注册服务 ,在app/config/app.php文件 'providers'=>[
Jenssegers\Mongodb\MongodbServiceProvider::class
], 'aliases'=>[
'Mongo' => Jenssegers\Mongodb\MongodbServiceProvider::class,
]
-
修改数据库配置文件 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', ''), ],
-
在 .env 文件中加入
-
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()}}