4

我创建了一个文件夹 'eloquent' 来开始测试/学习组件,我的composer.json文件是:

{
  "require": {
    "php": ">=5.3.0",
    "illuminate/database": "4.0.*"
  }
}

下面是我的test.php文件,已删除凭据。它工作得很好,直到我将 ->remember(10) 添加到命令中。如果这是开始使用 ->remember() 所需要的,那么我想考虑添加 Illuminate Cache。有没有人知道任何关于做这样的事情的博客文章或教程?

<?php
/**
 * Testing Laravel's Eloquent ORM
 * @see https://github.com/illuminate/database
 * @see http://laravel.com/docs/database
 */
require 'vendor/autoload.php';

use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;

$capsule->addConnection(array(
  'driver'    => '',
  'host'      => '',
  'database'  => '',
  'username'  => '',
  'password'  => '',
  'charset'   => 'utf8',
  'collation' => 'utf8_unicode_ci',
  'prefix'    => '',
  ));

//$capsule->bootEloquent();
$capsule->setAsGlobal();

$name = Capsule::table('user')->where('id', 123 )->remember(10)->get();

var_dump( $name );

// PHP Fatal error:  Uncaught exception 'ReflectionException' with message 'Class cache does not exist'

我不确定下一步是什么让->remember()工作。我尝试将照明/缓存添加到 composer.json 文件并更新。我不确定如何在 Laravel 之外的 Eloquent 中使用它。

4

3 回答 3

5

saff33r 是对的,但只是为了帮助像我这样需要“文件”缓存的人,这是如何:
在你的 composer.json

    "illuminate/cache": "4.0.*",
    "illuminate/filesystem": "4.0.*",

在您的启动文件中:

    use \Illuminate\Database\Capsule\Manager as Capsule;
    use \Illuminate\Cache\CacheManager as CacheManager;
    use \Illuminate\Filesystem\Filesystem as Filesystem;
    ...

    $container = $capsule->getContainer();
    $container['config']['cache.driver'] = 'file';
    $container['config']['cache.path'] = __DIR__ . '/uploads/cache/eloquent';
    $container['config']['cache.connection'] = null;
    $container['files'] = new Filesystem();

    $cacheManager = new CacheManager($container);
    $capsule->setCacheManager($cacheManager);
    $capsule->bootEloquent();
于 2014-04-08T09:33:53.713 回答
4

它应该已经在“照亮/缓存”中,查看供应商,你应该在那里看到它。

您需要设置缓存管理器,然后通过调用

$capsule->setCacheManager(CacheManager $cache);

我没有深入了解如何执行此操作的详细信息,但希望这将足以让您继续前进。

编辑:

您需要添加以下内容才能使其正常工作:

use Illuminate\Cache\CacheManager as CacheManager;

$container = $capsule->getContainer();

$container->offsetGet('config')->offsetSet('cache.driver', 'array');

$cacheManager = new CacheManager($container);

$capsule->setCacheManager($cacheManager);

显然可以随意更改使用的缓存驱动程序,但请记住,更改缓存驱动程序将需要添加额外的必需设置。

于 2013-06-15T17:50:02.213 回答
0

查看https://github.com/Luracast/Laravel-Database它在 laravel 之外提供了完整的雄辩支持,包括工匠迁移等等</p>

  • 4.2分支包含 laravel 4.2.* 组件
  • 5.2分支包含 laravel 5.2.* 组件

披露:我是上述存储库的作者

于 2016-05-16T05:12:21.820 回答