我用laravel之外的雄辩。获取数据库实例的正确语法是什么?
这里是负责它的文件:
class DbSql
{
public function db()
{
$capsule = new Capsule;
$capsule->addConnection([
'driver' => Settings::DATABASE_DRIVER,
'host' => Settings::DATABASE_HOST,
'database' => Settings::DATABASE_NAME,
'username' => Settings::DATABASE_USERNAME,
'password' => Settings::DATABASE_PASSWORD,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => ''
]);
# Make this Capsule instance available globally
$capsule->setAsGlobal();
return $capsule;
}
}
在控制器,我实例化实例一次,可以使用几个时间在控制器:
$dbInstance = (new DbSql())->db(); // Create the instance
// Instance usages:
$images = $dbInstance->table('images_attachments')->where...
$files = $dbInstance->table('files')->where...
.....
我应该用实例:
$dbInstance = (new DbSql())->db();
如上面的代码
或:
$dbInstance = (new DbSql())->db()->getConnection();
什么是正确的方法是什么?
如果你的目标而努力就像使用Laravel一样使用'Eloquent',那么你所要做的就是像你一样创建'Capsule'对象,而不是'$ capsule-> setAsGlobal()',你可以使用'$ capsule- > bootEloquent();'。然后,只需创建并调用Capsule对象一次,然后像使用Laravel一样使用'Eloquent'('Class X extends Model {....}')。如果这不是你的预期用途,我很抱歉浪费你的时间:) – Mjh
你有没有机会尝试我的解决方案? – LombaX