Я немного озадачен тем, как использовать базу данных 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();
Оба метода работают нормально, но какой я предпочитаю? Первое решение использует одно и то же соединение каждый раз?
Спасибо
Задача ещё не решена.
Других решений пока нет …