После того, как вы установили 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
общедоступной (возможно,не по умолчанию) или используйте вместо этого псевдоним.