php - 是否可以将 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 独立使用?
解决方案
好吧,经过这么多的鬼混,我终于想通了..
作曲家.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"
推荐阅读
- java - 从java运行linux命令
- apache-spark - Spark:映射组和展平数组
- pandas - 如何使用 Pandas 将数据框行数据转换为列
- swift - Swift 中的 int 到 int
- excel - 使用 VBA 添加新行时如何在单元格中添加特定值
- python-3.x - 有没有办法用 '#' 替换从索引 0 到索引 -4 的字符串中的字符(即除了最后 4 个字符之外的所有字符)
- node.js - 如何防止我的 App Engine 应用出现“appspot.com”?
- javascript - 跨域请求块 Node.js
- ansible - 将文件内容转换为 ansible 或 jinja2 中的单行,其中 \n 字符替换原始换行符
- android - 如何在android 10中以编程方式切换音频输出?