[英]Fatal error: Class 'Illuminate\Database\Capsule\Manager' not found
[英]Slim 3 Eloquent initialization error Argument 1 must be Illuminate\Database\Capsule\Manager
披露:這是我的第一個 Slim 應用
我曾嘗試將 Eloquent 與 Slim 3 一起使用,但似乎無法正常工作。 我已經用 composer 安裝了所有東西,按照網站上的安裝指南進行操作。
當我嘗試使用我的 User 模型(它擴展了 Eloquent 模型)時,我收到了一個致命錯誤:
致命錯誤:在 ****\\vendor\\illuminate\\database\\Eloquent\\Model.php on line 3280 中調用成員函數 connection() on null
我的 appConfig 看起來像這樣:
$config['db'] = [
'driver' => 'mysql',
'host' => '****',
'database' => '****',
'username' => '****',
'password' => '****',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
];
我根據文檔傳遞給應用程序:
$app = new \Slim\App(["settings" => $config]);
$container = $app->getContainer();
$container['db'] = function (ContainerInterface $container) {
$settings = $container->get('database');
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($settings);
$capsule->setAsGlobal();
$capsule->bootEloquent();
return $capsule;
};
我的 User 類如下所示:
class User extends Illuminate\Database\Eloquent\Model {}
我在Stackoverflow上找到了一種解決方法,如下所示:
use Illuminate\Database\Eloquent\Model as Eloquent;
use Illuminate\Database\Capsule\Manager;
class User extends Eloquent {
public function __construct(Manager $capsule, array $attributes = [])
{
parent::__construct($attributes);
}
}
但是如果我根據端口覆蓋構造函數,我會得到一個不同的錯誤:
_Catchable 致命錯誤:傳遞給 Up\\models\\User::_ construct() 的參數 1必須是 Illuminate\\Database\\Capsule\\Manager 的實例,沒有給出,在 ****\\vendor\\illuminate\\database\\Eloquent\\ 中調用第 644 行的 Model.php 並在第 14 行的 ****\\models\\User.php 中定義
我現在卡住了。 請幫忙
我在這里找到了解決方案,但似乎有點不合適。 我只需要像這樣單獨初始化 Eloquent:
$capsule = new Capsule;
$capsule->addConnection($config['db']);
$capsule->setEventDispatcher(new Dispatcher(new Container));
$capsule->bootEloquent();
這樣$container['db'] = function () {}
部分被排除在外,但現在一切正常
編輯(評論):整個部分現在看起來像這樣:
$app = new \Slim\App(["settings" => $config]);
$container = $app->getContainer();
/*$container['db'] = function (ContainerInterface $container) {
$settings = $container->get('database');
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($settings);
$capsule->setAsGlobal();
$capsule->bootEloquent();
return $capsule;
};*/
$capsule = new Capsule;
$capsule->addConnection($config['db']);
$capsule->setEventDispatcher(new Dispatcher(new Container));
$capsule->bootEloquent();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.