Symfony: как использовать метод createTable () PdoSessionHandler? - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь сохранить сеансы моего приложения (Symfony 4) в базе данных. Недостатком является то, что я не могу понять, как использовать следующий код и что он указывает на документацию Symfony: https://symfony.com/doc/current/doctrine/pdo_session_storage.html.

try {
    $sessionHandlerService->createTable();
} catch (\PDOException $exception) {
    // the table could not be created for some reason
}

Прежде всего, спасибо.

примечание: извините за мойплохой английский

1 Ответ

0 голосов
/ 27 октября 2019

После того, как вы установили dsn для обработчика сеанса pdo, как описано на странице, которую вы уже связали , вы можете использовать внедрение зависимостей для Symfony, чтобы сначала получить PdoSessionHandler а затем просто вызовите функцию. Например, , если вы используете миграции доктрин, в миграции выполните:

use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

class Version20191028200000 extends AbstractMigration implements ContainerAwareInterface {
    use ContainerAwareTrait;

    public function up(Schema $schema) {
        $pdoSessionHandler = $this->container->get(PdoSessionHandler::class); // or alias!
        $pdoSessionHandler->createTable();
    }

    public function down(Schema $schema) {
        // empty, or $this->addSql('DROP TABLE sessions'); <-- use correct table name!
    }
}

Обратите внимание, что это лишь незначительно отличается от простого копирования соответствующего оператора create из PdoSessionHandler::createTable и поместим его в $this->addSql(...), что фактически выведет запрос при выполнении миграции.

Также обратите внимание, что вам, возможно, придется сделать службу PdoSessionHandler общедоступной (возможно,не по умолчанию) или используйте вместо этого псевдоним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...