我正在关注这个Laravel/MongoDB包:https://github.com/jenssegers/。在这里,如果您转到这一部分的https://github.com/jenssegers/laravel-mongodb#basic-usage-2,您可以看到他们正在使用DB::collection()
方法,并将集合名称传递给该方法。
现在,在我的控制器中,我正尝试这样做:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Import;
use App\Models\Projects;
use Jenssegers\Mongodb\Collection;
use Jenssegers\Mongodb\Query\Builder;
class ImportController extends Controller
{
public function get_all_products() {
// Predefined key
$predefined_keys = [ 'image_link', 'title', 'price', 'brand', 'link' ];
// Get all the products
//$get_products = Import::paginate(10);
$get_products = DB::collection('products_1')->get();
return response()->json($get_products, 200);
}
}
但我没有得到任何结果。你能告诉我我错过了什么吗?
我的目标是直接在这个控制器中设置集合名称,而不是在Model中。
更新:。
我的导入模式如下:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Jenssegers\Mongodb\Eloquent\Model;
class Import extends Model
{
protected $connection = 'mongodb';
protected $collection = 'products_46';
// protected $table = 'projects';
}
1条答案
按热度按时间atmip9wb1#
您配置此项目的方式有问题。
从您链接的文档中:
在使用MongoDB连接时,Laravel会自动为您提供相应的MongoDB对象。
然而,在您报告的评论中,
DB::collection('products_1')->get();
导致:此错误消息引用的是MySQL,而不是MongoDB。根据this question,您似乎正在将MySQL用于应用程序的其他部分。
在任何情况下,我认为答案都是确保适当地加载包(如果
DB
在Illuminate\Support\Facades
中单独定义并且在这部分代码的范围内,还可以消除名称空间之间的歧义)。