首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用laravel将数据添加到mongoDb中

使用laravel将数据添加到mongoDb中
EN

Stack Overflow用户
提问于 2021-12-03 10:11:45
回答 1查看 29关注 0票数 0

我使用laravel向mongoDb添加数据:

模型中的 Banner.php

代码语言:javascript
运行
复制
<?php

namespace App\Models\Mongo;

use Illuminate\Database\Eloquent\Model;

class Banner extends Model
{
    protected $connection = 'mongodb';
    protected $collection = 'banner';
    protected $guarded = ['_id'];
    public $timestamps = false;
    protected $fillable = [
        '_id',
        'url',
        'width',
        'height',
    ];
}

控制器中的 : BannerController.php

代码语言:javascript
运行
复制
use App\Models\Mongo\Banner;
use MongoDB\BSON\ObjectId;
public function store(Request $request)
{
   Banner::create([
     '_id'   => new ObjectId(),
     'url'   => 'test.jpg',
     'width' => 960,
     'height'=> 300
   ]);
   return response()->json([
        'status' => 'success'
    ], 200);
}

错误: message: "Call to a member function prepare() on null"

或者我尝试了另一种方法,而不是使用模型类进行保存,而是使用存储库:BannerRepository.php

代码语言:javascript
运行
复制
<?php
namespace App\Repositories\MongoDB;
use App\Models\Mongo\Banner;
use MongoDB\BSON\ObjectId;
class BannerRepository extends MongoDBBaseRepository
{
    public function model()
    {
        return Banner::class;
    }
}

在主计长:

代码语言:javascript
运行
复制
use App\Models\Mongo\Banner;
use App\Repositories\MongoDB\BannerRepository;
use MongoDB\BSON\ObjectId;

   /**
     * @var BannerRepository
     */
   protected $bannerRepository;

public function __construct(
        BannerRepository $bannerRepository
 ) {
        $this->bannerRepository = $bannerRepository;
}
public function store(Request $request)
{
   $this->bannerRepository->getModel()->create([
     '_id'   => new ObjectId(),
     'url'   => 'test.jpg',
     'width' => 960,
     'height'=> 300
   ]);
   return response()->json([
        'status' => 'success'
    ], 200);
}

错误: Return value of App\\Repositories\\MongoDBBaseRepository::getModel() must be an instance of Jenssegers\\Mongodb\\Eloquent\\Model, instance of App\\Models\\Mongo\\Banner returned"

我试过两种方法。这两个错误。不知道我哪里做错了。请给我你的意见。我刚开始吃拉拉酒,所以有点难。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-03 10:17:28

您的模型正在扩展Illuminate\Database\Eloquent\Model;

尝试使用Mongo Jenssegers\Mongodb\Eloquent\Model;

就像这样:

代码语言:javascript
运行
复制
<?php

namespace App\Models\Mongo;

use Jenssegers\Mongodb\Eloquent\Model;

class Banner extends Model
{
}

您可以找到更多信息,这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70212620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档