2014-10-31 152 views
0

我试图用Capsule创建我自己的mysql数据库连接。我从Laravel一个错误消息:类paginator不存在 - Laravel

$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! 

如何解决这一问题?谢谢 !

回答

1

通过在Laravel外面运行Eloquent,我得到了同样的错误信息。也许我的研究如何解决这个问题对某些人来说很有意思。

分页程序取决于3个模块:请求查看翻译。第一个和最后一个模块初始化相当简单,但查看需要额外的设置。所以我们需要手动初始化Paginator类和依赖关系。我们可以使用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个技巧更多。也许你会需要设置一个基本的URL:

$collection->setBaseUrl('http://example.com'); 

,并使用json_encode($collection->toArray())如果你需要转换集合JSON格式

了解更多关于the magic of dependencies here