我尝试使用Capsule创建自己的mysql数据库连接。我收到了来自Laravel的错误消息:
类分页器不存在
然后我添加了一行代码:
$capsule->getContainer()->bind('paginator', 'Illuminate'Pagination'Paginator');
显示了另一条错误消息:
目标[IIlluminate''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!
如何解决此问题?谢谢
我在Laravel之外运行Eloquent时收到了同样的错误消息。也许我对如何修复它的研究会引起一些人的兴趣。
传呼机依赖于3个模块:请求、查看和翻译器。第一个和最后一个模块的初始化非常简单,但View需要额外的设置。因此,我们需要手动初始化分页器类和依赖项。
View类最难启动,但我们可以使用这个小包将其初始化为独立组件。只需将"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')
);
});
现在您可以使用分页方法。只需要2个技巧。也许你需要设置一个基本网址:
$collection->setBaseUrl('http://example.com');
如果您需要将集合转换为json格式的,请使用json_encode($collection->toArray())
点击此处阅读更多关于依赖关系魔力的信息