Как получить доступ к вашей базе данных (Doctrine Connection) из задачи (консольная команда) в Symfony 1.4

Есть много способов использовать команды Symfony. Одна из полезных вещей, которую вы можете сделать, это автоматизировать задачи, связанные с базой данных вашего проекта, или даже создать вспомогательные методы для очистки таблиц и т. Д. В режиме разработки. Если вы работаете с Symfony 1.4, мы быстро объясним вам, как легко получить доступ к базе данных в рамках Задачи или Консольной команды Symfony.

Получить соединение с базой данных

Как вы, возможно, знаете, вы можете определить несколько соединений с базой данных на ./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-Databases
all:
doctrine:
class: sfDoctrineDatabase
param:
dsn:      mysql:host=localhost;dbname=my_database
username: root
password: password

Как видите, в этом примере у нас есть простое соединение с именем doctrine с заданной конфигурацией. Поэтому в нашем коде для получения соединения мы будем использовать doctrine подключение. Однако вас интересует очень простой вспомогательный метод, который вы можете добавить в класс задач для получения соединения по умолчанию:

getDatabase($databaseConnection)->getConnection();
return Doctrine_Manager::getInstance()->getCurrentConnection();
}

getDefaultDatabaseConnection вернет определенную связь доктрины на вашем databases.yml файл, однако вы можете изменить имя, если оно другое.

Пример задачи

В следующем тестовом задании показан базовый пример выполнения php symfony test-command:demo определяется следующим классом, где вы сможете использовать соединение с базой данных в execute функция:

namespace = 'test-command';
$this->name = 'demo';
$this->briefDescription = 'This command does something';
$this->detailedDescription = <<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`");
}
}

Обратите внимание, что вы можете запускать как простые запросы, так и используя модель доктрины.

Ссылка на основную публикацию
Adblock
detector