2011-03-16 22 views
5

में कस्टम एसक्यूएल निष्पादित करें मैं सिम्फनी एप्लिकेशन में कुछ मॉडल ऑब्जेक्ट्स को पुनर्प्राप्त करने के लिए कुछ कस्टम एसक्यूएल निष्पादित करने का प्रयास कर रहा हूं। मुझे वेब पर एक ट्यूटोरियल मिला जिसने कहा कि ऐसा कुछ मुझे क्वेरी निष्पादित करने की अनुमति देगा हालांकि मॉडल को पॉप्युलेट नहीं करना है (मॉडल को पॉप्युलेट करना एक बड़ा मुद्दा नहीं है, यह केवल पढ़ने के लिए डेटा है)।सिम्फनी

$pdo = Doctrine_Manager::getInstance()->connection()->getDbh(); 
$pdo->prepare("SELECT * from something complicated"); 
$pdo->execute(); 
$this->sensorReadings = $pdo->fetchAll(); 

लेकिन मैं एक त्रुटि हो रही है:

Fatal error: Call to undefined method PDO::execute() 
in sfproject/apps/frontend/modules/site/actions/actions.class.php 

उत्तर

9
$query = "SELECT * from something complicated"; 
$rs = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAssoc($query); 

resultset एक सरणी है।

2
// get Doctrine_Connection object 
$con = Doctrine_Manager::getInstance()->connection(); 
// execute SQL query, receive Doctrine_Connection_Statement 
$st = $con->execute("SELECT User.* FROM ...."); 
// fetch query result 
$result = $st->fetchAll(); 

// convert array to objects 
foreach ($result as $userArray) { 
    $user = new User(); 
    $user->fromArray($userArray); 
    ... 
} 

यह कोड बहुत छोटा नहीं है लेकिन मौजूदा सिद्धांत कनेक्शन के माध्यम से कस्टम क्वेरी निष्पादित करने की अनुमति देता है और अंत में आपकी ऑब्जेक्ट प्राप्त करता है। 'Mysql: मेजबान = somedomain; dbname = dbname'

0

अपने प्रश्न का उत्तर देने (यह एक काम से किया जाता है):

$databaseManager = new sfDatabaseManager ($this->configuration); 
Doctrine_Manager::connection()->setAttribute (Doctrine_Core::ATTR_AUTO_FREE_QUERY_OBJECTS, true); 

$dbOptions = Doctrine_Manager::connection()->getManager()->getConnection ('doctrine')->getOptions(); 
$dbDsn = $dbOptions['dsn']; 
$dbDsnArr = explode (';', $dbDsn); 
$dbHost = str_replace ('mysql:host=', '', $dbDsnArr[0]); 
$dbName = str_replace ('dbname=', '', $dbDsnArr[1]); 
$dbUn = $dbOptions['username']; 
$dbPw = $dbOptions['password']; 

DSN मान लिया जाये कि इस तरह के रूप कॉन्फ़िगर किया गया है: dsn

इस कोड को आप किसी तरह के संबंध के डेटाबेस कनेक्शन जानकारी पुनः प्राप्त करने की अनुमति देता है, तो यह कई कनेक्शन के लिए के रूप में अच्छी

काम करेंगे मुझे उम्मीद है कि यह मदद करता है ...