本文概述
- 检索数据库连接
- 任务示例
检索数据库连接如你所知, 你可以在./proyect/config/databases.yml文件中定义多个数据库连接。在此文件中, 你可以通过以下方式定义连接:
# You can find more information about this file on the symfony website:# http://www.symfony-project.org/reference/1_4/en/07-Databasesall:doctrine:class: sfDoctrineDatabaseparam:dsn:mysql:host=localhost;
dbname=my_databaseusername: rootpassword: password
如你所见, 在此示例中, 我们使用给定的配置创建了一个名为doctrine的简单连接。因此, 在我们的代码中检索连接, 我们将使用命名的学说连接。但是, 你感兴趣的是一个非常简单的帮助程序方法, 可以将其添加到” 任务类” 以检索默认连接:
<
?php/** * This method creates a connection to the default database of your application with Doctrine. * * @return type */private function getDefaultDatabaseConnection(){$databaseManager = new sfDatabaseManager(sfProjectConfiguration::getApplicationConfiguration($application = "frontend", $env = "prod", $debug = true));
// Get some connection stablished on the databases.yml file$databaseConnection = "doctrine";
$databaseManager->
getDatabase($databaseConnection)->
getConnection();
return Doctrine_Manager::getInstance()->
getCurrentConnection();
}
getDefaultDatabaseConnection会在你的database.yml文件中返回定义的学说连接, 但是你可以更改其他名称。
任务示例以下测试任务显示了由以下类定义的php symfony test-command:demo执行的基本示例, 你将可以在execute函数中使用数据库连接:
<
?php// ./proyect/lib/task/TestCommandTask.class.php/** * Example of Symfony 1.4 to get access to the database within a console command (task). * * @author Carlos Delgado <
dev@ourcodeworld.com>
*/class TestCommandTask extends sfBaseTask {public function configure(){$this->
namespace = 'test-command';
$this->
name = 'demo';
$this->
briefDescription = 'This command does something';
$this->
detailedDescription = <
<
<
EOFDescription of this command.EOF;
}/*** This method creates a connection to the default database of your application with Doctrine.* * @return type*/private function getDefaultDatabaseConnection(){$databaseManager = new sfDatabaseManager(sfProjectConfiguration::getApplicationConfiguration($application = "frontend", $env = "prod", $debug = true));
// Get some connection defined on the databases.yml file$databaseConnection = "doctrine";
$databaseManager->
getDatabase($databaseConnection)->
getConnection();
return Doctrine_Manager::getInstance()->
getCurrentConnection();
}/*** Action of the command.* * @param type $arguments* @param type $options*/public function execute($arguments = array(), $options = array()) {// Request access to database$conn = $this->
getDefaultDatabaseConnection();
// Now here you are able to execute queries in the way you want, or access tables with Doctrine e.g// $item = Doctrine_Core::getTable('items')->
find(1);
// $conn->
execute("TRUNCATE `table_name`");
}}
请注意, 你可以运行简单查询或使用理论模型。
【如何从Symfony 1.4中的任务(控制台命令)访问数据库(Doctrine连接)】编码愉快!
推荐阅读
- 如何在Symfony 1.4中为表单禁用CSRF保护/验证
- 低代码与自定义软件(哪个是更好的选择(什么时候?))
- 如何使用CLI从Subversion存储库中列出目录
- 如何使用Dompdf在Symfony 4中从HTML创建PDF
- 中间人攻击的详细指南
- 如何解决TCPDF错误(setPage()函数上的页码错误:0)
- 如何确定是否使用WinForms中的C#启用Windows更新
- 如何在不检出整个目录的情况下从子版本库中读取/提取文件的内容
- 如何在Symfony 4中使用PHP创建Excel文件