2013-04-26 9 views
5

ज़ेंड फ्रेमवर्क 2.0 की नई अवधारणाओं के आस-पास अपने सिर को लपेटने की कोशिश कर रहा है।ज़ेंड फ्रेमवर्क 2 - डेटाबेस कनेक्शन

मैं डेटाबेस से कनेक्ट करने की कोशिश कर रहा हूं, और उस कनेक्शन को नियंत्रक या मॉडल में प्राप्त करने का प्रयास कर रहा हूं। कुछ भी फैंसी नहीं, केवल क्वेरी के खिलाफ चलाने के लिए शुद्ध कनेक्शन।

//module.config.php 
return array(
    'db' => array(
     'driver'   => 'Pdo', 
     'dsn'   => 'mysql:dbname=DBNAME;host=HOSTNAME, 
     'driver_options' => array(
      PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
     ), 
     'username' => 'USERNAME', 
     'password' => 'PASSWORD', 
    ), 
    'service_manager' => array(
     'factories' => array(
      'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory', 
      'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', 
     ), 
    ), 
); 

क्या मैं गलत कर रहा हूँ:

तो यह मेरे वर्तमान कोड है?

+0

mysql: dbname = DBNAME; होस्ट = HOSTNAME अंत में गायब है? – Svetoslav

उत्तर

9

अपने ./config/autoload फ़ोल्डर में db.local.php बनाएँ और निम्न सामग्री डेटाबेस के लिए उपयोग करने के लिए अपने नियंत्रक $this->getServiceLocator()->get('db'); में

return array(
'db' => array(
    'driver'   => 'Pdo', 
    'dsn'   => 'mysql:dbname=zenBlog;host=localhost', 
    'username'  =>'root', 
    'password'  =>'', 
    'driver_options' => array(
     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
    ), 
), 
'service_manager' => array(
    'aliases' => array(
'db' => 'Zend\Db\Adapter\Adapter', 
), 
),); 

जोड़ें।

+0

बहुत बहुत धन्यवाद, यह काम कर रहा है! क्या आप मुझे यह भी बता सकते हैं कि इस मॉडल को किसी मॉडल/किसी अन्य वर्ग में कैसे पहुंचाया जाए? – grubolsch

+0

इसे 2 अलग-अलग कनेक्शन रखने के लिए कैसे संशोधित किया जाएगा, क्या यह 'एलबीएस' में 'डीबी' सरणी और 'डीबी' प्रविष्टि की प्रतिलिपि बनायेगा और बस उन्हें नाम दें। 'Db2'? –

+0

मैंने इसे आजमाया नहीं है, लेकिन मुझे लगता है कि यह उपनामों की प्रतिलिपि बनाने और नामकरण करके किया जा सकता है – user773440

0

इस प्रकार कॉन्फ़िगर \ autoload \ local.php में मेरा local.php जैसा दिखता है।

<?php 
return array(
'db' => array(
    'driver'   => 'Pdo', 
    'dsn' => 'mysql:dbname=<dbname>;host=localhost', 
    'username' => 'root', 
    'password' => <your password here>, 
    'driver_options' => array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
), 
), 
'service_manager' => array(
'aliases' => array(
'adapter' => 'Zend\Db\Adapter\Adapter', 
), 
),); 

अब एक डेटाबेस एडाप्टर बनाने के लिए इस का उपयोग करें:

$adapter = $this->getServiceLocator()->get('adapter'); 

एक एसक्यूएल statetment बनाएँ और चर $ एसक्यूएल में डाल दिया। अब यह करें:

$statement = $adapter->createStatement($sql); 
$result = $statement->execute(); 

आशा है कि इससे मदद मिलती है।

+0

टाइपो, मुझे लगता है कि, 'डीएसएन' नहीं होना चाहिए 'डीबीएन' – Kzqai

+0

@Kzqai: हाँ आप सही हैं। सही किया। धन्यवाद –

संबंधित मुद्दे