2014-04-16 8 views
6

मुझे नहीं पता कि बीबरली सिद्धांत-एक्सटेंशन को एकीकृत कैसे करें: https://github.com/beberlei/DoctrineExtensions डॉक्टर मॉड्यूल के साथ ज़ेंड फ्रेमवर्क 2 में।ज़ेंड फ्रेमवर्क 2 में बीबरली सिद्धांतों को कार्यान्वित करने के लिए कैसे करें

"beberlei/DoctrineExtensions": "dev-master"

मैं वें आवेदन मॉड्यूल से मेरी module.config.php में करने की कोशिश की: मैं संगीतकार के साथ इसे स्थापित

'doctrine' => array(
    'driver' => array(
     __NAMESPACE__ .'_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/'.__NAMESPACE__.'/Entity') 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__.'\Entity' => __NAMESPACE__. '_driver' 

      ) 
     ) 
    ), 
    'configuration' => array(
     'orm_default' => array(
      'string_functions' => array(
       'GroupConcat' => '/vendor/beberlei/DoctrineExtensions\Query\MsySql\GroupConcat' 
      ) 
     ) 
    ) 
), 

लेकिन यह अपवाद फेंक दिया गया था:

Fatal error: Class '/vendor/beberlei/DoctrineExtensions\Query\MsySql\GroupConcat' not found

उत्तर

5

विन्यास /vendor/beberlei फ़ोल्डर को संदर्भित करने की आवश्यकता नहीं है क्योंकि इसे ऑटोलोडर द्वारा नियंत्रित किया जाता है। विन्यास शायद कुछ इस तरह दिखना चाहिए:

$config = $this->getEntityManager()->getConfiguration(); 
$config->addCustomStringFunction('GROUP_CONCAT', 'DoctrineExtensions\Query\MySq\GroupConcat'); 

अब आप 'group_concat' का उपयोग कर सकते हैं:

'doctrine' => array(
    'driver' => array(
     __NAMESPACE__ .'_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/'.__NAMESPACE__.'/Entity') 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__.'\Entity' => __NAMESPACE__. '_driver' 

      ) 
     ) 
    ), 
    'configuration' => array(
     'orm_default' => array(
      'string_functions' => array(
       'GroupConcat' => 'DoctrineExtensions\Query\Mysql\GroupConcat' 
      ) 
     ) 
    ) 
), 
+0

कि does not काम ... गंभीर त्रुटि के बजाय संदेश 'मॉड्यूल (सिद्धांत एक्सटेंशन) के साथ प्रारंभ नहीं किया जा सका।' लाइन पर 189 –

+1

पर /var/www/marcus/adl_zf2/newADL/dartliga/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php में यह काम करता है यदि आप सभी निर्भरताओं को सही तरीके से स्थापित करते हैं। संगीतकार के साथ करना आसान है। Composer.json में आवश्यक कर्मचारियों के अलावा स्ट्रिंग होनी चाहिए: '" वायर्डमेडिया/सिद्धांत-एक्सटेंशन ":" * "' – zeliboba

+2

स्थानीय में मेरा प्रस्ताव हल हो गया था लेकिन सर्वर समस्या में हल नहीं हुआ है, फिर भी कोड बिल्कुल वही है, क्यों मैं रिमोट सर्वर मुझे त्रुटि त्रुटि त्रुटि क्लास 'सिद्धांत एक्सटेंशन \ क्वेरी \ MySql \ GroupConcat' नहीं मिला –

3

आपकी सेवा वर्ग में संगीतकार के साथ

"beberlei/DoctrineExtensions": "dev-master" 

उपयोग इस कोड को स्थापित करने के बाद इस तरह आपके डीक्यूएल में:

$dql = "SELECT GROUP_CONCAT(elem.name) FROM ..... GROUP BY ..."; 
$query = $this->getEntityManager()->createQuery($dql); 
return $query->getArrayResult(); 
+0

यदि कोई भी स्टीफन से नीचे दिए गए उदाहरण का मैन्युअल रूप से पालन करने के लिए कस्टम फ़ंक्शंस संलग्न नहीं करना चाहता है। कॉन्फ़िगरेशन के माध्यम से कस्टम फ़ंक्शन इंस्टॉल करना भी काम करता है। – zeliboba

0

यह

1- स्थापित DoctrineExtensions से मेरे लिए काम किया संगीतकार

composer require beberlei/DoctrineExtensions 

2- साथ autoload_classmapp.php को

'DoctrineExtensions' => 'vendor/beberlei/DoctrineExtensions' 

3- इस module.config में जोड़े इस लाइन में जोड़ें। PHP

'doctrine'=>array(
'configuration' => array(
     'orm_default' => array(
      'datetime_functions' => array(
       'date' => 'DoctrineExtensions\Query\Mysql\Date', 
       'date_format' => 'DoctrineExtensions\Query\Mysql\DateFormat', 
       'dateadd' => 'DoctrineExtensions\Query\Mysql\DateAdd', 
       'datediff' => 'DoctrineExtensions\Query\Mysql\DateDiff', 
       'day' => 'DoctrineExtensions\Query\Mysql\Day', 
       'dayname' => 'DoctrineExtensions\Query\Mysql\DayName', 
       'last_day' => 'DoctrineExtensions\Query\Mysql\LastDay', 
       'minute' => 'DoctrineExtensions\Query\Mysql\Minute', 
       'second' => 'DoctrineExtensions\Query\Mysql\Second', 
       'strtodate' => 'DoctrineExtensions\Query\Mysql\StrToDate', 
       'time' => 'DoctrineExtensions\Query\Mysql\Time', 
       'timestampadd' => 'DoctrineExtensions\Query\Mysql\TimestampAdd', 
       'timestampdiff' => 'DoctrineExtensions\Query\Mysql\TimestampDiff', 
       'week' => 'DoctrineExtensions\Query\Mysql\Week', 
       'weekday' => 'DoctrineExtensions\Query\Mysql\WeekDay', 
       'year' => 'DoctrineExtensions\Query\Mysql\Year', 
      ), 
      'numeric_functions' => array(
       'acos' => 'DoctrineExtensions\Query\Mysql\Acos', 
       'asin' => 'DoctrineExtensions\Query\Mysql\Asin', 
       'atan2' => 'DoctrineExtensions\Query\Mysql\Atan2', 
       'atan' => 'DoctrineExtensions\Query\Mysql\Atan', 
       'cos' => 'DoctrineExtensions\Query\Mysql\Cos', 
       'cot' => 'DoctrineExtensions\Query\Mysql\Cot', 
       'hour' => 'DoctrineExtensions\Query\Mysql\Hour', 
       'pi' => 'DoctrineExtensions\Query\Mysql\Pi', 
       'power' => 'DoctrineExtensions\Query\Mysql\Power', 
       'quarter' => 'DoctrineExtensions\Query\Mysql\Quarter', 
       'rand' => 'DoctrineExtensions\Query\Mysql\Rand', 
       'round' => 'DoctrineExtensions\Query\Mysql\Round', 
       'sin' => 'DoctrineExtensions\Query\Mysql\Sin', 
       'std' => 'DoctrineExtensions\Query\Mysql\Std', 
       'tan' => 'DoctrineExtensions\Query\Mysql\Tan', 
      ), 
      'string_functions' => array(
       'binary' => 'DoctrineExtensions\Query\Mysql\Binary', 
       'char_length' => 'DoctrineExtensions\Query\Mysql\CharLength', 
       'concat_ws' => 'DoctrineExtensions\Query\Mysql\ConcatWs', 
       'countif' => 'DoctrineExtensions\Query\Mysql\CountIf', 
       'crc32' => ' DoctrineExtensions\Query\Mysql\Crc32', 
       'degrees' => 'DoctrineExtensions\Query\Mysql\Degrees', 
       'field' => 'DoctrineExtensions\Query\Mysql\Field', 
       'find_in_set' => 'DoctrineExtensions\Query\Mysql\FindInSet', 
       'group_concat' => 'DoctrineExtensions\Query\Mysql\GroupConcat', 
       'ifelse' => 'DoctrineExtensions\Query\Mysql\IfElse', 
       'ifnull' => 'DoctrineExtensions\Query\Mysql\IfNull', 
       'match_against' => 'DoctrineExtensions\Query\Mysql\MatchAgainst', 
       'md5' => 'DoctrineExtensions\Query\Mysql\Md5', 
       'month' => 'DoctrineExtensions\Query\Mysql\Month', 
       'monthname' => 'DoctrineExtensions\Query\Mysql\MonthName', 
       'nullif' => 'DoctrineExtensions\Query\Mysql\NullIf', 
       'radians' => 'DoctrineExtensions\Query\Mysql\Radians', 
       'regexp' => 'DoctrineExtensions\Query\Mysql\Regexp', 
       'replace' => 'DoctrineExtensions\Query\Mysql\Replace', 
       'sha1' => 'DoctrineExtensions\Query\Mysql\Sha1', 
       'sha2' => 'DoctrineExtensions\Query\Mysql\Sha2', 
       'soundex' => 'DoctrineExtensions\Query\Mysql\Soundex', 
       'uuid_short' => 'DoctrineExtensions\Query\Mysql\UuidShort', 
      ), 

     ) 
    ) 
) 
1

मेरी प्रतिष्ठा सी से बहुत कम है omment लेकिन:

'doctrine' => array(
'driver' => array(
    __NAMESPACE__ .'_driver' => array(
     'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
     'cache' => 'array', 
     'paths' => array(__DIR__ . '/../src/'.__NAMESPACE__.'/Entity') 
    ), 
    'orm_default' => array(
     'drivers' => array(
      __NAMESPACE__.'\Entity' => __NAMESPACE__. '_driver' 

     ) 
    ) 
), 
'configuration' => array(
    'orm_default' => array(
     'string_functions' => array(
      'GroupConcat' => 'DoctrineExtensions\Query\**MsySql**\GroupConcat' 
     ) 
    ) 
)), 

होना चाहिए: न आया हुआ अपवाद 'Zend \ ModuleManager \ अपवाद \ RuntimeException':

'GroupConcat' => 'DoctrineExtensions\Query\**Mysql**\GroupConcat' 

नोटिस Mysql MsySql

+0

धन्यवाद, मैंने जवाब अपडेट किया है – Stephen

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