我使用laravel向mongoDb添加数据:
模型中的: Banner.php
<?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
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
<?php
namespace App\Repositories\MongoDB;
use App\Models\Mongo\Banner;
use MongoDB\BSON\ObjectId;
class BannerRepository extends MongoDBBaseRepository
{
    public function model()
    {
        return Banner::class;
    }
}在主计长:
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"
我试过两种方法。这两个错误。不知道我哪里做错了。请给我你的意见。我刚开始吃拉拉酒,所以有点难。谢谢
发布于 2021-12-03 10:17:28
您的模型正在扩展Illuminate\Database\Eloquent\Model;
尝试使用Mongo Jenssegers\Mongodb\Eloquent\Model;
就像这样:
<?php
namespace App\Models\Mongo;
use Jenssegers\Mongodb\Eloquent\Model;
class Banner extends Model
{
}您可以找到更多信息,这里。
https://stackoverflow.com/questions/70212620
复制相似问题