Определение базы данных Illuminate без Laravel

Я немного озадачен тем, как использовать базу данных Illuminate в моем проекте. Я нашел два способа его использования, но не могу понять, какой из них лучший / правильный.

Решение 1:

Это содержимое моего database.php:

require('vendor/autoload.php');

use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;
$capsule->addConnection([
'driver'    => 'mysql',
etc...
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();

Я использую это в моем приложении, как это

require_once('database.php');

use Illuminate\Database\Capsule\Manager as Capsule;

$users = Capsule::table('Users')->where('id', '>', 2)->get();

Таким образом, я должен использовать псевдоним «использовать Illuminate \ Database \ Capsule \ Manager как Capsule;» в каждом файле, где мне нужно соединение.

Решение 2: Я создаю класс соединения с тем, что, как я считаю, является одноэлементным.

class ConnectionFactory {

private static $factory;
private $db;

public static function getFactory(){
if (!self::$factory)
self::$factory = new ConnectionFactory();
return self::$factory;
}

public function getConnection() {

if (!$this->db) {
$capsule = new Capsule;
$capsule->addConnection([
'driver'    => 'mysql',
etc...
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
$this->db = $capsule->getConnection();
}
return $this->db;
}
}

Затем я использую это в моем приложении, как это

$db = ConnectionFactory::getFactory()->getConnection();
$users = $db->table('Users')->where('id', '>', 2)->get();

Оба метода работают нормально, но какой я предпочитаю? Первое решение использует одно и то же соединение каждый раз?

Спасибо

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]