我正在创建一个使用\Illuminate\Support\Facades\DB
来引用数据库的库。我在调用DB::table()->where()->get()
时遇到以下异常:" ReflectionException:类db不存在。"问题是什么,我需要做些什么才能克服它?
我知道有一个使用\Illuminate\Database\Capsule\Manager
建立与数据库连接的进程。但我还没有找到关于如何使用\Illuminate\Support\Facades\DB
进行此操作的任何示例。
代码示例:
use \Illuminate\Support\Facades\DB;
abstract class Data
{
public static function tables($prefix, $mode=null)
{
$outbound = array();
$tables = DB::table('information_schema.tables')->where('TABLE_NAME', 'LIKE', $prefix.'_%')->get();
foreach ($tables as $table) {
...
}
return $outbound;
}
}
堆栈追踪:
~/vendor/laravel/framework/src/Illuminate/Container/Container.php:749
~/vendor/laravel/framework/src/Illuminate/Container/Container.php:644
~/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:709
~/vendor/laravel/framework/src/Illuminate/Container/Container.php:1203
~/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:175
~/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:144
~/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:231
~/Data.php:XXX
答案 0 :(得分:1)
因为它是一个外观,所以将它添加到类的顶部以使其工作:
Convert.ToBase64String();
或使用完整命名空间:
use DB;
答案 1 :(得分:0)
这不是正确的方法,但你可以这样写。给' /'在DB之前
$ tables = \ DB :: table(' information_schema.tables') - > where(' TABLE_NAME',' LIKE',$ prefix。& #39; _%') - >得到()
答案 2 :(得分:0)
暂时用DB::
注释行并添加https://stackoverflow.com/a/39354471/729077应该可以帮助您找出真正的原因。
一个原因可能与该线程中列出的原因类似:Uncaught ReflectionException: Class log does not exist Laravel 5.2,唯一的区别是缺少了db
类而不是log
类。
这似乎取决于哪个类出现首先发生在代码中-在您自己的代码中,它是DB
,而通常是Log
门面触发错误。
对我来说,原因是缺少第三方软件包,其服务提供商已添加到config/app.php
中的列表中。结果,每个技术人员命令都会吐Call to undefined method Illuminate\Support\Facades\DB::connection()
错误。在将明显的use Illuminate\Support\Facades\DB
添加到有问题的文件顶部之后,该错误更改为您的错误(class db does not exist
)。
我已经添加了https://stackoverflow.com/a/39354471/729077中的代码,然后用DB::connection()
注释了这一行,而工匠展示了真正的罪魁祸首。 composer require
丢失包裹后,laravel重新开始工作。
答案 3 :(得分:0)
如果其他人在运行phpunit测试时得到了此提示,则可以通过扩展Tests\TestCase
而不是PHPUnit\Framework\TestCase
来解决此问题