I add these lines, they does not exist in the original FileDriver.php:
$pos= strrpos($className,'\\');
if( $pos)
{
$className=substr($className,$pos+1);
}
now It works. but I don't think it is good to change doctrine sources. what
is the better way to do so?
On Wednesday, August 13, 2014 10:41:35 AM UTC+8, [email protected] wrote:
>
> Finally I solved my problem.
> 1. the first thing it to add the namespace of a entity to bootstrap, in my
> situation, the namespace is *Gush\Sync\Entity*. I add this directly in
> the doctrine.php which locates in vender/bin directory.
>
> 2. Secondly, rename the schema file to *Gush.Sync.Entity.Path.dcm.yml.
> t*his is important, or it would show " Class 'Path' does not exist".
> even though , I did this step. it still shows this error:
>
> Invalid mapping file 'Gush.Sync.Entity.Path.dcm.yml' for class
> 'Gush\Sync\Entity\Path'
>
> I check doctrine source code , I found the code below in FileDriver.php
>
> $result =
> $this->loadMappingFile($this->locator->findMappingFile($className));
> //$result is array containing a path key , not sh\Sync\Entity\Path.
>
>
> $pos= strrpos($className,'\\');
> if( $pos)
> {
> $className=substr($className,$pos+1);
> }
>
>
> if (!isset($result[$className])) { // $className is
> Gush\Sync\Entity\Path
> throw MappingException::invalidMappingFile($className,
> str_replace('\\', '.', $className) . $this->locator->getFileExtension());
> }
>
> return $result[$className];
>
>
>
> On Monday, August 11, 2014 11:59:26 AM UTC+8, [email protected] wrote:
>>
>>
>> I follow the tutorial Getting Started with Doctrine¶
>> <http://doctrine-orm.readthedocs.org/en/latest/tutorials/getting-started.html>,
>>
>> it defines this directory structure:
>>
>> |-- config
>> | |-- xml
>> | `-- yaml
>> `-- src
>>
>>
>> it also loads the src directory using composer autoload command:
>> {
>> "require": {
>> "doctrine/orm": "2.4.*",
>> "symfony/yaml": "2.*"
>> },
>> "autoload": {
>> *"psr-0": {"": "src/"}*
>> }
>> }
>>
>> I tried to create Path entity in my custom directory, for example:
>> |-- config
>> | |-- xml
>> | `-- yaml
>> Path.dcm.yml
>> |-- modules
>> |--Sync
>> |--Entity
>> Path.php
>>
>>
>> I modify the line *"psr-0": {"": "src/"} *to *"psr-0": {"*
>> *Gush\\Sync\\Entity**": "**/modules/Sync/Entity'**"} *and run composer
>> update.
>>
>> I execute "php vendor/bin/doctrine orm:schema-tool:create " , it shows
>> this error:
>>
>>
>> [Doctrine\Common\Persistence\Mapping\MappingException]
>> Class 'Path' does not exist
>>
>> Anyone met the same problem before? Please give me some clues. thanks in
>> advance.
>>
>>
--
You received this message because you are subscribed to the Google Groups
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.