2013-11-22 7 views
6

मैं सिद्धांत कंसोल उपकरण भाग गया याद कर रहे हैं:सिद्धांत 2 कंसोल उपकरण का कहना है: आप एक "CLI-config.php" या "config/CLI-config.php"

$ php vendor/doctrine/orm/bin/doctrine orm:schema-tool:create --dump-sql 

मैं उम्मीद कार्यक्षमता के बजाय यह मिल गया :

You are missing a "cli-config.php" or "config/cli-config.php" file in your 
project, which is required to get the Doctrine Console working. You can use the 
following sample as a template: 

<?php 
use Doctrine\ORM\Tools\Console\ConsoleRunner; 

// replace with file to your own project bootstrap 
require_once 'bootstrap.php'; 

// replace with mechanism to retrieve EntityManager in your app 
$entityManager = GetEntityManager(); 

return ConsoleRunner::createHelperSet($entityManager); 

मुद्दे:

  • मैं ZF2 पर हूँ, और कहा जाता है कोई फाइल नहीं है bootstrap.php
  • ,210
  • मैं ZF2 लिए नया हूँ, इसलिए मैं नहीं जानता कि क्या मेरी entityManager है और मैं के लिए GetEntityManager

क्या रखना चाहिए मैं यह कैसे काम कर सकता हूँ?

उत्तर

10

आसान तरीका

उपयोग सिद्धांत मॉड्यूल:

vendor/bin/doctrine-module orm:schema-tool:create --dump-sql

+0

कुछ स्पष्टीकरण यहां बहुत अच्छा होगा! –

+1

मेरे प्रश्न में सिद्धांत कंसोल टूल एक पूरी तरह से परिभाषित इकाई प्रबंधक के साथ काम करने में सक्षम होने के लिए एक पर्यावरण की अपेक्षा करता है। 'सिद्धांत-मॉड्यूल' उपकरण किसी और का उपयोग करना चाहिए, या एक अलग उपकरण है, क्योंकि इसे किसी इकाई प्रबंधक को काम करने की आवश्यकता नहीं है। एक इकाई प्रबंधक को परिभाषित करने के तरीके को समझने के बजाय, या जेडएफ 2 पर्यावरण को परिभाषित करने के तरीके को कैसे करें, सिद्धांत सिद्धांत कंसोल-टूल का उपयोग करने में सक्षम होने के लिए, मैंने 'सिद्धांत-मॉड्यूल' टूल का उपयोग करने का विकल्प चुना जिसने मुझे अतिरिक्त सेट अप करने की आवश्यकता नहीं थी । – Dennis

+0

मुझे कोई त्रुटि देता है 'ऐसी कोई फ़ाइल या निर्देशिका नहीं' (मैं सिम्फनी 2.7 बीटीडब्ल्यू का उपयोग कर रहा हूं ...) – nclsvh

2

मुश्किल रास्ता

दो फ़ाइलों आप अपने आप को लिखने की ज़रूरत होती है: bootstrap.php, और cli-config.php

मुझे दो फाइलें क्यों लिखनी पड़ेगी, हुह?

सिद्धांत डॉक्स आपको ऐसा करने का निर्देश देता है।

यह कहां कहता है?

यहाँ

:

  • obtaining-an-entitymanager (इसका इस्तेमाल अपने खुद के बूटस्ट्रैप मॉडल करने के लिए)
  • setting-up-the-commandline-tool (इसका इस्तेमाल अपने खुद के CLI-config मॉडल करने के लिए)

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' 
); 
+0

जब आपके पास उन फ़ाइलों को नहीं है तो आपको क्या करना चाहिए? सिद्धांत-दस्तावेज़ मुझे उनको कैसे प्राप्त करें या मुझे उन्हें देखने के तरीके पर कोई स्पष्टीकरण नहीं देते .... – nclsvh

+0

आप उन्हें स्वयं बना सकते हैं। यानी आपने सिद्धांत कैसे स्थापित किया? मैंने संगीतकार 'php composer.phar का उपयोग "सिद्धांत/ओआरएम" की आवश्यकता है। यदि आपके पास संगीतकार नहीं है, तो पहले इसे इंस्टॉल करें। (बिना सिद्धांत के कुश्ती को कुचलने की कोशिश में थोड़ा सा बिंदु है)। फिर, अपनी खुद की 'bootstrap.php' फ़ाइल बनाएं, इसे अपने पहले लिंक में से एक की तरह कॉपी करें, फिर इसे अपने विशिष्ट डेटाबेस पैरामीटर जोड़ने के लिए संपादित करें। फिर, दूसरे लिंक में अपनी खुद की 'cli-config.php' बनाएं। – Dennis

+0

हाँ, ऐसा लगता है कि मेरे पास उन फाइलें नहीं हैं ... कोई विचार क्यों नहीं, शायद क्योंकि मैं घर के वातावरण के एक कस्टम संस्करण में काम कर रहा हूं। मैंने संगीतकार के साथ सब कुछ स्थापित किया है, लेकिन php composer.phar को कभी भी नहीं हटाएं, बस साधारण संगीतकार की आवश्यकता है ***। वैसे भी, मैं इसे मैन्युअल रूप से करने की कोशिश करूंगा, धन्यवाद .. – nclsvh

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