Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 没有为实体指定标识符/主键为什么使用KNP Translateable_Symfony_Symfony4 - Fatal编程技术网

Symfony 没有为实体指定标识符/主键为什么使用KNP Translateable

Symfony 没有为实体指定标识符/主键为什么使用KNP Translateable,symfony,symfony4,Symfony,Symfony4,我正在使用Knp/DoctrineBehaviors翻译我的数据库内容。 我遵循并创建了两个实体,一个用于不可翻译的内容,另一个用于可翻译的字段 namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Knp\DoctrineBehaviors\Contract\Entity\TranslatableInterface; use Knp\DoctrineBehaviors\Model\Translatable\Translatab

我正在使用
Knp/DoctrineBehaviors
翻译我的数据库内容。 我遵循并创建了两个实体,一个用于不可翻译的内容,另一个用于可翻译的字段

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;
    }


}
我还在我的bundles.php文件中添加了这个包


但是当我运行命令
php-bin/console-doctor:schema:update--force
在中创建表时,给出错误:
没有为实体“App\Entity\TestTranslation”指定标识符/主键。每个实体都必须有一个标识符/p主键。

实体“TestTranslation”中缺少主键。 在条令中,每个实体类都必须有一个标识符/主键。您可以选择用作@Id()注释标识符的字段,或者在您的示例中选择@ORM\Id()

例如,将其添加到实体中:

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

然后,可以播放命令:
phpbin/console d:s:u--force

实体“TestTranslation”中缺少主键。 在条令中,每个实体类都必须有一个标识符/主键。您可以选择用作@Id()注释标识符的字段,或者在您的示例中选择@ORM\Id()

例如,将其添加到实体中:

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

然后,您可以播放命令:
php-bin/console d:s:u--force

在我的示例Symfony 3.4中,我忘记注册bundle并将config.yml设置为:

knp_doctrine_behaviors:
    translatable:   true

在我的Symfony 3.4中,我忘记注册bundle并将config.yml设置为:

knp_doctrine_behaviors:
    translatable:   true