मुश्किल रास्ता
दो फ़ाइलों आप अपने आप को लिखने की ज़रूरत होती है: bootstrap.php
, और cli-config.php
मुझे दो फाइलें क्यों लिखनी पड़ेगी, हुह?
सिद्धांत डॉक्स आपको ऐसा करने का निर्देश देता है।
यह कहां कहता है?
यहाँ
:
CLI-config में, देखने के लिए कोड
// replace with mechanism to retrieve EntityManager in your app
$entityManager = GetEntityManager();
यहां, GetEntityManager()
किसी भी लाइब्रेरी या कोड का हिस्सा नहीं है, यह आपकी खुद की कस्टम विधि है कि डॉक्टर आपको अपने आप लिखने का सुझाव देता है, जहां वह विधि Doctrine\ORM\EntityManager
का उदाहरण देता है। मुझे लगता है कि इस भाग पर सिद्धांत संदेश अधिक स्पष्ट हो सकता है।
मैं अभी भी यह नहीं कर सकते, डॉक्स बेहद कठोर हैं, मदद करो!
यदि आपके पास अपनी कॉन्फ़िगरेशन में ज़्यादातर परतें हैं, यानी सिम्फनी के जेडएफ 2 के साथ सिद्धांत को काम करने की कोशिश कर रहा है, तो यह दर्द हो सकता है कि जहां सिद्धांत समाप्त होता है, जहां फ्रेमवर्क शुरू होता है, आदि। सिद्धांत को अपने आप में स्थापित करने का प्रयास करें किसी भी ढांचे का उपयोग किए बिना, सिद्धांत दस्तावेज़ों का पालन करके एक अलग परीक्षण कंटेनर, और चीजें बहुत स्पष्ट होनी चाहिए।
यहाँ मैं अपने सिद्धांत config के लिए क्या किया है है।मैंने लचीलापन के लिए 3 फाइलें बनाने का फैसला किया, और उन्हें अपने ज़ेंड फ़ोल्डर संरचना के ./config
फ़ोल्डर में डाल दिया।
पहले, मैं, फिर एक cli-config.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
require 'config/bootstrap.php';
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);
return ConsoleRunner::createHelperSet($entityManager);
है मेरी bootstrap.php
date_default_timezone_set("America/Detroit"); // Set the default timezone
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(- 1);
include 'vendor/autoload.php';
include 'doctrine-config.php';
और अंत में, मेरे doctrine-config.php
। यह सिर्फ इस फ़ाइल को आपके कोड के अन्य हिस्सों से कॉल करने के लिए अलग और आसान तरीका है। मेरे मामले में इसे CLI
के लिए और एक ZF2 सिंगलटन के भीतर से कहा जाता है जब मुझे एक सिद्धांत कनेक्शन की आवश्यकता होती है।
// Paths to Entities that we want Doctrine to see
$paths = array(
"module/Module/src/Entity",
"module/MyApplication/src/Entity"
);
// Tells Doctrine what mode we want
$isDevMode = true;
// Doctrine connection configuration
$dbParams = array(
'driver' => 'pdo_mysql',
'user' => 'user',
'password' => 'pass',
'dbname' => 'db_name'
);
कुछ स्पष्टीकरण यहां बहुत अच्छा होगा! –
मेरे प्रश्न में सिद्धांत कंसोल टूल एक पूरी तरह से परिभाषित इकाई प्रबंधक के साथ काम करने में सक्षम होने के लिए एक पर्यावरण की अपेक्षा करता है। 'सिद्धांत-मॉड्यूल' उपकरण किसी और का उपयोग करना चाहिए, या एक अलग उपकरण है, क्योंकि इसे किसी इकाई प्रबंधक को काम करने की आवश्यकता नहीं है। एक इकाई प्रबंधक को परिभाषित करने के तरीके को समझने के बजाय, या जेडएफ 2 पर्यावरण को परिभाषित करने के तरीके को कैसे करें, सिद्धांत सिद्धांत कंसोल-टूल का उपयोग करने में सक्षम होने के लिए, मैंने 'सिद्धांत-मॉड्यूल' टूल का उपयोग करने का विकल्प चुना जिसने मुझे अतिरिक्त सेट अप करने की आवश्यकता नहीं थी । – Dennis
मुझे कोई त्रुटि देता है 'ऐसी कोई फ़ाइल या निर्देशिका नहीं' (मैं सिम्फनी 2.7 बीटीडब्ल्यू का उपयोग कर रहा हूं ...) – nclsvh