您可以通過擴展sfBaseTask
來創建symfony「任務」有關更多詳情,請參閱http://www.symfony-project.org/cookbook/1_1/en/tasks。如何從symfony任務的配置方法訪問數據庫
但是,我看不到如何在configure
部分設置數據庫連接。我想這樣做,以便我可以讓detailedDescription
屬性顯示一些僅在數據庫中定義的選項。
這樣做的最好方法是什麼?
您可以通過擴展sfBaseTask
來創建symfony「任務」有關更多詳情,請參閱http://www.symfony-project.org/cookbook/1_1/en/tasks。如何從symfony任務的配置方法訪問數據庫
但是,我看不到如何在configure
部分設置數據庫連接。我想這樣做,以便我可以讓detailedDescription
屬性顯示一些僅在數據庫中定義的選項。
這樣做的最好方法是什麼?
如果你看看路上的symfony creates a custom Task Skeleton(./symfony generate:task yourTaskName
),你會看到代碼,看起來像這樣的執行函數內部:
protected function execute([..])
{
$databaseManager = new sfDatabaseManager($this->configuration);
$connection = $databaseManager->getDatabase($options['connection'])->getConnection();
[..]
這段代碼的問題是,它使用默認配置,但如果你知道你要開什麼連接(檢查database.yml
或schema.yml
找出名字)應該是很容易的,其代碼如下所示:
protected function configure()
{
$databaseManager = new sfDatabaseManager(sfProjectConfiguration::getApplicationConfiguration('frontend', 'prod', true));
$connection = $databaseManager->getDatabase("the_name_of_your_connection")->getConnection();
[..]
然後你就可以訪問ÿ我們的模型通常的方式,例如:
$myItem = Doctrine_Core::getTable('item')->find(14);
echo $myItem->getId();
如果您使用的是Doctrine,那麼最好的方法是在php模型文件中定義一個方法。該模型的文件位於/PROJECT/lib/model/doctrine/MODEL_NAMETable.class.php
要小心MVC模型!
一旦你有你自己的方法,調用它的方法是:Doctrine_Core::getTable('TABLE_NAME')->miNewMethod($params-if-any);
我希望我來幫你!
有什麼選擇嗎?只要按照常規的方式來做就行了......:getTable – Dziamid 2011-06-06 21:13:56
我已經重寫了這個問題來澄清問題。 – rlandster 2011-06-07 04:34:22