首页 > 解决方案 > 是否可以将 Laravel Facades 与 Illuminate Database Standalone 一起使用?

问题描述

我正在关注这个自述文件,并且很好奇是否有可能让以下工作:

$capsule = new Illuminate\Database\Capsule\Manager;

$capsule->addConnection([
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => 'password',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
]);

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

# can Facades be used like this somehow?
var_dump(DB::connection()->getPdo());
var_dump(Hash::make('hash'));

我收到以下错误,这是预期的,因为脚本没有加载任何外观,但我不确定如何调整工作:

Fatal error: Uncaught Error: Class 'DB' not found

我也在这里尝试了接受的答案,但仍然没有运气(甚至不确定我是否正确使用它?)..

$container = new Illuminate\Container\Container();
Illuminate\Support\Facades\Facade::setFacadeApplication($container);
$container->singleton('db', 'Illuminate\Support\Facades\DB');
class_alias('Illuminate\Support\Facades\DB', 'DB');

这给了我以下错误:

Fatal error: Uncaught Error: Call to undefined method Illuminate\Support\Facades\DB::connection()

添加“使用数据库;” 顶部仍然给出以下错误:

Fatal error: Uncaught Error: Class 'DB' not found

添加“使用 Illuminate\Support\Facades\DB;” 顶部给出以下错误:

Fatal error: Uncaught RuntimeException: A facade root has not been set.

有什么建议么?还是只是 Facades 不能与 Illuminate Database 独立使用?

标签: phplaravel-5

解决方案


好吧,经过这么多的鬼混,我终于想通了..

作曲家.json

{
    "require": {
        "illuminate/database": "^5.7",
        "illuminate/hashing": "^5.7"
    }
}

引导程序.php

require 'vendor/autoload.php';

$app = new Illuminate\Container\Container();
Illuminate\Support\Facades\Facade::setFacadeApplication($app);

$app->singleton('db', function () use ($app) {
    $capsule = new Illuminate\Database\Capsule\Manager;

    $capsule->addConnection([
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'database',
        'username'  => 'root',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ]);

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

    return $capsule;
});

$app->singleton('hash', function () use ($app) {
    return new Illuminate\Hashing\HashManager($app);
});

class_alias(Illuminate\Support\Facades\DB::class, 'DB');
class_alias(Illuminate\Support\Facades\Hash::class, 'Hash');

索引.php

require '../bootstrap.php';

var_dump(DB::connection()->getPdo());
var_dump(Hash::make('password'));

# object(PDO)#16 (0) {}
# string(60) "$2y$10$aevTHr94mYoh9PBlJz43EuT2qJLCKkNrOLNpKLhbjGzlqpMS6YVBG"

推荐阅读