DoctrineExtensions注意:未定义的索引:$ em-> getRepository中的foreignKey('Gedmo \\ Translatable \\ Entity \\ Translation');

时间:2015-05-15 15:54:09

标签: php symfony doctrine-orm doctrine-extensions

我尝试保存多个翻译,例如example,但我有错误。

这是实体

/**
 * @ORM\Entity
 * @Gedmo\TranslationEntity(class="BaseTranslation")
 * @ORM\Table(name="c_Base")
 */
class Base {

    /**
     * @ORM\Column(type="bigint")
     * @ORM\Id
     */
    private $id;

    /**
     * Hexaid
     * @var string
     */
    private $hid;

    /**
     * @ORM\Column(type="string")
     * @GRID\Column(title="name")
     * @Gedmo\Translatable
     * @var string
     */
    private $name;

    /**
     * @ORM\Column(type="text", nullable=true)
     * @Gedmo\Translatable
     * @var string
     */
    private $description;

 /**
     * GRID\Column(title="translations",field="translations.content")
     * @ORM\OneToMany(
     *     targetEntity="BaseTranslation",
     *  mappedBy="object",
     *  cascade={"persist", "remove"}
     * )
     * @Assert\Valid(deep = true)
     */
    private $translations;

翻译实体

/**
 * Entity\Translation\ProductTranslation.php

 * @ORM\Entity
 * @ORM\Table(name="c_base_translations",
 *   uniqueConstraints={@ORM\UniqueConstraint(name="lookup_unique_idx", columns={
 *     "locale", "object_id", "field"
 *   })}
 * )
 */
class BaseTranslation extends AbstractPersonalTranslation{
    /**
     * @ORM\ManyToOne(targetEntity="Base", inversedBy="translations")
     * @ORM\JoinColumn(name="object_id", referencedColumnName="id", onDelete="CASCADE")
     */
    protected $object;

    public function __construct($locale, $field, $value)
    {
        $this->setLocale($locale);
        $this->setField($field);
        $this->setContent($value);
    }

}

我尝试使用多种翻译

  $em = $this->getDoctrine()->getManager();
        $repository = $em->getRepository('Gedmo\\Translatable\\Entity\\Translation');

        $article = new Base();

        $article->setName('content en');

        $repository->translate($article, 'name', 'de', 'name de')
            ->translate($article, 'name', 'pl', 'name pl')

        ;

        $em->persist($article);
        $em->flush();

并获取

注意:未定义索引:foreignKey

[1] Symfony\Component\Debug\Exception\ContextErrorException: Notice: Undefined index: foreignKey
    at n/a
        in /home/grek/PhpstormProjects/welasy/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php line 655

    at Symfony\Component\Debug\ErrorHandler->handleError('8', 'Undefined index: foreignKey', '/home/grek/PhpstormProjects/welasy/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php', '655', array('name' => 'foreignKey'))
        in /home/grek/PhpstormProjects/welasy/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php line 655

    at Doctrine\ORM\Mapping\ClassMetadataInfo->getReflectionProperty('foreignKey')
        in /home/grek/PhpstormProjects/welasy/vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity/Repository/TranslationRepository.php line 80

    at Gedmo\Translatable\Entity\Repository\TranslationRepository->translate(object(Base), 'name', 'de', 'name de')
        in /home/grek/PhpstormProjects/welasy/vendor/Mea/CharterBundle/Controller/ResourcesController.php line 171

    at Mea\CharterBundle\Controller\ResourcesController->oneViewByHidAction('9888fff563a6a42', '2015;20')
        in  line 

    at call_user_func_array(array(object(ResourcesController), 'oneViewByHidAction'), array('9888fff563a6a42', '2015;20'))
        in /home/grek/PhpstormProjects/welasy/app/bootstrap.php.cache line 3028

    at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), '1')
        in /home/grek/PhpstormProjects/welasy/app/bootstrap.php.cache line 2990

    at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), '1', true)
        in /home/grek/PhpstormProjects/welasy/app/bootstrap.php.cache line 3139

    at Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle(object(Request), '1', true)
        in /home/grek/PhpstormProjects/welasy/app/bootstrap.php.cache line 2383

    at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
        in /home/grek/PhpstormProjects/welasy/web/app_dev.php line 28

1 个答案:

答案 0 :(得分:0)

将“@ORM \ GeneratedValue”添加到Base

    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue
     */
    private $id;