我尝试使用Capsule创建自己的mysql数据库连接。我收到了Laravel的错误消息:
Class paginator不存在
然后我添加了一行代码:
$capsule->getContainer()->bind('paginator', 'Illuminate\Pagination\Paginator');
出现了另一条错误消息:
目标[Illuminate \ View \ ViewFinderInterface]不可实例化。
这是构造函数:
use Illuminate\Database\Capsule\Manager as Capsule;
public function __construct($params){
$capsule = new Capsule;
$params = array_merge(static::$baseParams, $params);
$capsule->addConnection($params);
//$capsule->getContainer()->bind('paginator', 'Illuminate\Pagination\Paginator');
$this->db = $capsule->getConnection();
}
ps:
$this->db->table('table_name')->get() work!
$this->db->table('table_name')->paginate(4) doesn't work!
如何解决这个问题?谢谢!
答案 0 :(得分:2)
我通过在Laravel之外运行Eloquent得到了相同的错误消息。也许我的研究如何修复它对某人来说会很有趣。
Paginator 取决于3个模块:请求,查看和转换程序。第一个和最后一个模块初始化非常简单,但查看需要其他设置。所以我们需要手动初始化Paginator类和依赖项。
View类最难开始,但我们可以使用this tiny package将其初始化为独立组件。只需将"philo/laravel-blade": "2.*"
添加到 composer.json 文件
然后将 $ capsule-> getContainer() - > .... 替换为
self::$capsule->getContainer()->bind('paginator', function() {
// View initialization
$views = __DIR__ . '/views';
$cache = __DIR__ . '/cache';
$blade = new \Philo\Blade\Blade($views, $cache);
return new \Illuminate\Pagination\Factory(
// Initialize and setup Request
\Illuminate\Http\Request::createFromGlobals(),
// Get ViewFactory instance
$blade->view(),
// Initialize Translator
new \Symfony\Component\Translation\Translator('en')
);
});
现在您可以使用 paginate 方法。只需2个技巧。也许你需要设置一个基本网址:
$collection->setBaseUrl('http://example.com');
如果需要将集合转换为json格式,请使用json_encode($collection->toArray())