プロジェクトで 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();
どちらの方法も問題なく機能しますが、どちらが優先されますか? 最初のソリューションは毎回同じ接続を使用していますか?
どうも