在Laravel之外使用来自Laravel 4的Eloquent ORM

时间:2013-06-14 09:56:11

标签: laravel eloquent

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

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

以下是我的 test.php 文件,其中删除了凭据。它工作得很好,直到我在命令中添加 - >记住(10)。我想在接下来的时候考虑添加Illuminate Cache,如果这是开始使用所需的 - > remember()。是否有人知道有关此类内容的博客文章或教程?

<?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'

我不确定下一步是什么让 - &gt;记住()工作。我尝试将 illuminate / cache 添加到composer.json文件并进行更新。我不确定如何在Laravel之外的Eloquent中使用它。

3 个答案:

答案 0 :(得分:5)

saff33r是对的,但只是为了帮助像我这样需要&#34;文件&#34;缓存这是如何:
在你的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();

答案 1 :(得分: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);

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

答案 2 :(得分:0)

查看https://github.com/Luracast/Laravel-Database它提供了完整的laravel支持,包括工匠迁移等等

  • 4.2分支包含laravel 4.2。* components
  • 5.2分支包含laravel 5.2。* components
  

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