2

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

两种方法都可以正常工作,但哪种方法更受欢迎?第一个解决方案是否每次都使用相同的连接?

谢谢

4

0 回答 0