在没有Laravel的情况下定义Illuminate数据库

时间:2015-03-27 18:50:30

标签: php laravel illuminate-container

我对如何在我的项目中使用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

0 个答案:

没有答案