在Symfony 3项目上工作。
我所有有关数据库工作的CLI学说突击队,例如:
doctrine:database:create
或doctrine:schema:update --force
很奇怪,我正在尝试通过控制器方法从存储库中获取一些数据,但是当我尝试在浏览器中导航到有关页面时,我似乎会在连接拒绝的错误上反弹。
以下一些配置:
config.yml part
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
orm:
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
parameters.yml
parameters:
database_host: 127.0.0.1
database_port: 3306
database_name: db_name
database_user: db_user
database_password: db_pw
**控制器**
<?php
namespace AppBundleController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyBundleFrameworkBundleControllerController;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction()
{
return $this->render('default/index.html.twig');
}
/**
* @Route("/roedel", name="roedel")
*/
public function roedelAction()
{
return $this->render('default/roedel.html.twig');
}
/**
* @Route("/territorium", name="territorium")
*/
public function territoriumAction()
{
return $this->render('default/territorium.html.twig');
}
/**
* @Route("/dejacht", name="jacht")
*/
public function jachtAction()
{
$artists = $this->getDoctrine()
->getRepository('AppBundle:Artist')
->findAll();
return $this->render('default/jacht.html.twig', [
'artists' => $artists
]);
}
}
额外信息:
- 使用Docker是一个测试柜,尽管我不确定这是否重要,因为Cli突击队的学说确实有效。
当您试图在Docker容器中运行Symfony的Console命令时,有两种可能的方案。
您从本地计算机来运行Symfony命令,例如。Mac,Windows等 - 然后,DB主机必须是您的Docker Machine IP(通常是192.168.99.100
,但取决于您的配置),并且您必须为MySQL容器正确映射3306端口3306-更多有关端口映射https://docs的更多信息.docker.com/compose/compose-file/#/ports。
您从" Web App"容器 - 然后将DB主机设置为mysql
,您必须在" Web App"和MySQL容器之间正确配置网络 - 有关网络的更多信息https://docs.docker.com/compose/compose-file/#/networks
对我而言,更方便将是第二种方法,因为您不必更改DB参数...
您只需要在config.yml
中添加mysql Serverdoctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
server_version: 5.7.42
并手动删除缓存存储库/dev