2

プロジェクトで Illuminate Database を使用する方法について少し混乱しています。私はそれを使用する2つの方法を見つけましたが、どちらが最良/正しい方法であるかを理解できません.

解決策 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();

このように、"use Illuminate\Database\Capsule\Manager as 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