Для сущности не указан идентификатор / первичный ключ, почему используется KNP Transurable - PullRequest
0 голосов
/ 15 февраля 2020

Я использую Knp/DoctrineBehaviors для перевода содержимого моей базы данных. Я следовал инструкции и создал 2 объекта: 1 для непереводимого контента и другой для переводимых полей.

namespace App\Entity;


use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Contract\Entity\TranslatableInterface;
use Knp\DoctrineBehaviors\Model\Translatable\TranslatableTrait;

    /**
     * Class Test
     * @package App\Entity
     * @ORM\Entity()
     */
    class Test implements TranslatableInterface
    {

        use TranslatableTrait;

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

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

        /**
         * @param int $id
         */
        public function setId(int $id): void
        {
            $this->id = $id;
        }




    }

и объект перевода:

namespace App\Entity;


use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Contract\Entity\TranslationInterface;
use Knp\DoctrineBehaviors\Model\Translatable\TranslationTrait;

/**
 * Class TestTranslation
 * @package App\Entity
 * @ORM\Entity()
 */
class TestTranslation implements TranslationInterface
{

    use TranslationTrait;

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

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

    /**
     * @param mixed $name
     */
    public function setName($name): void
    {
        $this->name = $name;
    }


}

Я также добавил Bundle в мои файлы. php file.

Но когда я запускаю команду php bin/console doctrine:schema:update --force, чтобы создать таблицу, выдается ошибка: No identifier/primary key specified for Entity "App\Entity\TestTranslation". Every Entity must have an identifier/p rimary key.

1 Ответ

0 голосов
/ 17 февраля 2020

В вашей сущности "TestTranslation" отсутствует первичный ключ. В doctrine каждый класс сущности должен иметь идентификатор / первичный ключ. Вы можете выбрать поле, которое служит идентификатором, с аннотацией @Id () или в вашем случае: @ORM \ Id ().

Например, добавьте это к своей сущности:

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

А затем вы можете сыграть команду: php bin/console d:s:u --force

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...