私は現在、自作のhack-y MVCアプローチのModelコンポーネントをphp-activerecordに置き換えています。私は、データベースサーバがダウンし、そのページがゲストアバター、名前、および役割を持つユーザーバッジを表示するために使用された場合に表示される別のページを持っています。コードは以下の通りである:ユーザがどの、ログインしている場合データベース接続のないActiveRecordモデルのインスタンス化
if (Auth::$signed_in)
echo Auth::$user->getAvatarWrap();
else echo (new \App\Models\User([
'name' => 'Guest',
'role' => 'guest',
'avatar_url' => GUEST_AVATAR
]))->getAvatarWrap();
Auth::$signed_in
はtrue
に設定されている - DBの停止の場合には - 不可能であるので、else
ブランチは、事前定義されたデータを用いて実行します。
Pre-ActiveRecordこれはオブジェクトにプロパティを追加するだけで、getAvatarWrap
メソッドの呼び出しは問題なく実行されます。現在、ActiveRecordによってモデルが制御されているため、何らかの理由で一連の追加呼び出しが行われます。これは、モデルにリレーションが定義されている可能性がありますが、わかりません。
ActiveRecord\DatabaseException: PDOException: SQLSTATE[08006] [7] could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432? in /var/www/vendor/php-activerecord/php-activerecord/lib/Connection.php:260
Stack trace:
#0 /var/www/vendor/php-activerecord/php-activerecord/lib/Connection.php(260): PDO->__construct('pgsql:host=loca...', '<username>', '<password>', Array)
#1 /var/www/vendor/php-activerecord/php-activerecord/lib/Connection.php(122): ActiveRecord\Connection->__construct(Object(stdClass))
#2 /var/www/vendor/php-activerecord/php-activerecord/lib/ConnectionManager.php(33): ActiveRecord\Connection::instance('pgsql://databas...')
#3 /var/www/vendor/php-activerecord/php-activerecord/lib/Table.php(114): ActiveRecord\ConnectionManager::get_connection('pgsql')
#4 /var/www/vendor/php-activerecord/php-activerecord/lib/Table.php(90): ActiveRecord\Table->reestablish_connection(false)
#5 /var/www/vendor/php-activerecord/php-activerecord/lib/Table.php(71): ActiveRecord\Table->__construct('App\\Models\\User')
#6 /var/www/vendor/php-activerecord/php-activerecord/lib/Model.php(765): ActiveRecord\Table::load('App\\Models\\User')
#7 /var/www/vendor/php-activerecord/php-activerecord/lib/Model.php(271): ActiveRecord\Model::table()
#8 /var/www/includes/views/_sidebar.php(20): ActiveRecord\Model->__construct(Array)
#9 /var/www/includes/views/_layout.php(148): include('/var/www...')
#10 /var/www/includes/views/fatalerr.php(46): require('/var/www...')
#11 /var/www/includes/init.php(32): require('/var/www...')
#12 /var/www/includes/do.php(3): require('/var/www...')
#13 /var/www/public/index.php(1): require('/var/www...')
#14 {main} in /var/www/vendor/php-activerecord/php-activerecord/lib/Connection.php on line 262
は、どのように私は、私はそれがものを見つけることができませんという事実を知ったときに、接続を探して停止することはActiveRecordを教えてください、そして、それは私がそれを供給していたデータとコンテンツであることを?停止中に私のモデルを使用することに別れを告げなければなりませんか?
sqlite:memory接続を使用するように設定を変更できますか? – colburton
私はコードとそれが実行されているサーバーの両方を完全に制御しています。 – SeinopSys
これは解決策になる可能性があります。すべてのクエリは失敗しますが、それはどんな場合でも発生します。 – colburton