Symfony 3项目
我所有关于数据库工作的CLI原则突击队,如:doctrine:database:create
或doctrine:schema:update --force
奇怪的是,我试图在我的控制器方法中从我的存储库中获取一些数据,但是当我试图在浏览器中导航到有问题的页面时,我似乎在Connection refused错误上反弹。
下面是一些配置:
config.yml部分
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
字符串
参数.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 AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
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命令行命令确实可以工作。
2条答案
按热度按时间j2qf4p5b1#
当你试图对在docker容器中运行的MySQL运行Symfony的控制台命令时,有两种可能的情况。
从本地机器运行symfony命令,例如Mac、Windows等- 然后DB主机必须是你的docker机器IP(通常是
192.168.99.100
,但取决于你的配置),并且你必须为mysql容器正确Map端口3306-更多关于端口Map的信息https://docs.docker.com/compose/compose-file/#/ports。您从“web app”容器运行symfony命令-然后DB主机设置为
mysql
,并且您必须在“web app”和mysql容器之间正确配置网络-更多关于网络的信息https://docs.docker.com/compose/compose-file/#/networks对我来说,更方便的是第二种方法,因为你不必改变DB参数……
xdyibdwo2#
你只需要在config.yml中添加你的MySQL服务器
字符串
并手动删除该高速缓存存储库/设备