我对如何在我的项目中使用 Illuminate Database 感到有些困惑。我找到了两种使用它的方法,但不知道哪一种是最好/正确的方法。
解决方案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();
两种方法都可以正常工作,但哪种方法更受欢迎?第一个解决方案是否每次都使用相同的连接?
谢谢