सिद्धांत 2 इकाई त्रुटि

मैं पूछना चाहूंगा, अगर किसी ने पहले ऐसी त्रुटि प्राप्त की है। चूंकि मैं पहले से ही सिद्धांत के साथ बग फिक्सिंग के लिए 2 घंटों तक फंस गया हूं। तो किसी भी तरह की मदद की सराहना की जाएगी। मुद्दे पर। मैं सिद्धांत इकाई प्रबंधक के साथ लड़ रहा हूं मैं इसे काम नहीं कर सकता। मैंने काम करने के लिए इकाई और सिद्धांत वर्ग बनाया, लेकिन मुझे हर समय एक त्रुटि मिल रही है:

Fatal error: Uncaught exception 'Doctrine\ORM\Mapping\MappingException' with message  'Class "MSP\Model\Entity\Category" is not a valid entity or mapped super class.' in /home/dariss/www/dom/php/MenuSiteProject/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php:216 Stack trace: #0 /home/dariss/www/dom/php/MenuSiteProject/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php(87): Doctrine\ORM\Mapping\MappingException::classIsNotAValidEntityOrMappedSuperClass('MSP\Model\Entit...') #1 /home/dariss/www/dom/php/MenuSiteProject/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(113): Doctrine\ORM\Mapping\Driver\AnnotationDriver->loadMetadataForClass('MSP\Model\Entit...', Object(Doctrine\ORM\Mapping\ClassMetadata)) #2 /home/dariss/www/dom/php/MenuSiteProject/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(318): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array) in /home/dariss/www/dom/php/MenuSiteProject/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php on line 216 

मेरी इकाई वर्ग।

namespace MSP\Model\Entity; 
use Doctrine\ORM\Mapping as ORM;

/**
* Category
*
* @ORM\Entity
* @ORM\Table(name="category")
*/
class Category {

/**
 * @var integer $id
 *
 * @ORM\Column(name="id", type="int", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="SEQUENCE")
 * @ORM\SequenceGenerator(sequenceName="category_id_seq", allocationSize=1, initialValue=1)
 */
private $id;
/**
 * @var String $name
 *
 * @ORM\Column(name="name", type"string", length=50, nullable=true)
 */
private $name;
/**
 * @var integer $parent
 *
 * @ORM\Column(name="parent", type="int", nullable=true)
 */
private $parent;

/**
 * @return int
 */
public function getId()
{
    return $this->id;
}

/**
 * @param $name
 * @return Category
 */
public function setName($name)
{
    $this->name = $name;

    return $this;
}

/**
 * @return String
 */
public function getName()
{
    return $this->name;
}

/**
 * @param int $parent
 * @return Category
 */
public function setParent($parent)
{
    $this->parent = $parent;

    return $this;
}

/**
 * @return int
 */
public function getParent()
{
    return $this->parent;
}

सिद्धांत वर्ग:

namespace MSP\Helper;


use Doctrine\Common\ClassLoader,
Doctrine\ORM\Configuration,
Doctrine\ORM\EntityManager,
Doctrine\Common\Cache\ArrayCache,
Doctrine\DBAL\Logging\EchoSQLLogger;

class Doctrine{

public $em = null;

public function __construct()
{

    require_once __DIR__.'/../../../vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php';

    $doctrineClassLoader = new ClassLoader('Doctrine',  '/');
    $doctrineClassLoader->register();
    $entitiesClassLoader = new ClassLoader('MSP\Model\Entity', '/../Model/Entity');
    $entitiesClassLoader->register();
    $proxiesClassLoader = new ClassLoader('Proxies', '/../Proxies/');
    $proxiesClassLoader->register();

   //Set up caches
    $config = new Configuration;
    $cache = new ArrayCache;
    $config->setMetadataCacheImpl($cache);
    $driverImpl = $config->newDefaultAnnotationDriver(array('/../Model/Entity'), true);
    $config->setMetadataDriverImpl($driverImpl);
    $config->setQueryCacheImpl($cache);

    $config->setQueryCacheImpl($cache);

   //Proxy configuration
    $config->setProxyDir('/proxies');
    $config->setProxyNamespace('Proxies');

   //Set up logger
    $logger = new EchoSQLLogger;
    //$config->setSQLLogger($logger);

    $config->setAutoGenerateProxyClasses( TRUE );

    $iniParser = new \MSP\Helper\IniParser();
    $configuration = $iniParser->getConfig();
   //Database connection information
    $connectionOptions = array(
        'driver'   => $configuration['driver'],
        'user'     => $configuration['username'],
        'password' => $configuration['password'],
        'dbname'   => $configuration['dbname'],
        'host'     => $configuration['host']
    );

   //Create EntityManager
    $this->em = EntityManager::create($connectionOptions, $config);
    }
 }

परीक्षण फ़ाइल:

   $doctrine = new MSP\Helper\Doctrine();
   $doctrine->em->find('MSP\Model\Entity\Category', 1);
0
यह मेरे साथ हुआ ... केवल लिनक्स के साथ और सीधे कैश फ़ोल्डर को नष्ट करते समय ... क्या यह आपके लिए समान है?
जोड़ा लेखक mlwacosmos, स्रोत
स्पष्ट आज़माएं: कैश कमांड ... यह मेरे लिए काम करता है
जोड़ा लेखक mlwacosmos, स्रोत
जोड़ा लेखक str, स्रोत
मैंने थ्रेड पोस्ट करने से पहले उस जवाब की जांच की। नहीं, जिसने मेरी मदद नहीं की।
जोड़ा लेखक Dariss, स्रोत

1 उत्तर

जब आप संस्थाओं को एनोटेट करते हैं तो आपको @ORM उपसर्ग छोड़ने की आवश्यकता होती है।

लेकिन मैंने सिम्फनी 2 दस्तावेज में उदाहरण का पालन किया? हां। सिम्फनी 2 के लिए आपको @ORM का उपयोग करने की आवश्यकता है। लेकिन आपके परीक्षण के मामले "शुद्ध" सिद्धांत का उपयोग करते हैं जिसका अर्थ है @ORM नहीं।

यदि आपको शुद्ध सिद्धांत का उपयोग करके वास्तव में अपनी सामग्री चलाने की आवश्यकता है तो यमल नोटेशन का उपयोग करने पर विचार करें।

एस 2 @ORM का उपयोग क्यों करता है? यह एक लंबी दुखी कहानी है लेकिन मूल रूप से यह @ORM उपसर्ग पेश करती है ताकि अन्य एनोटेशन सिद्धांत के साथ संघर्ष न करें।

क्या आप @ORM के उपयोगकर्ता को अनुमति देने के लिए सिद्धांत कॉन्फ़िगरेशन को ट्वीक कर सकते हैं? हां। लेकिन मैं कैसे भूल जाता हूँ। आप इसके लिए खोज सकते हैं।

निचली पंक्ति: सिम्फनी 2 सिद्धांत सेवा का उपयोग करने पर विचार करें। ये तो और आसान है।

0
जोड़ा