我对如何在我的项目中使用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作为胶囊;"在我需要连接的每个文件中。
解决方案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();
这两种方法都运行正常,但我更喜欢哪种方法?第一个解决方案是每次都使用相同的连接吗?
THX