【问题标题】:Access level to translation files - Symfony2翻译文件的访问级别 - Symfony2
【发布时间】:2014-03-04 22:35:28
【问题描述】:

我生成了一个新实体

php app/console generate:doctrine:entity

当我想更新我的数据库时

php 应用程序/控制台原则:schema:update --dump-sql

我有这个错误

HP Fatal error:  Access level to Minn\AdsBundle\Entity\CountryTranslation::$id must be protected (as in class ..

我认为 translation-bundle 需要注意:

/NetBeansProjects/tuto/src/Minn/AdsBundle/Entity/CountryTranslation.php

朋友们有什么想法吗?!!

【问题讨论】:

  • 向我们提供您的实体 CountryTranslation 的声明。
  • 如果你查看创建的实体,你能告诉我们$id的类型是什么吗?

标签: php symfony doctrine-orm


【解决方案1】:

这是如何定义 CountryTranslation:

<?php

namespace Minn\AdsBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Translatable\Entity\MappedSuperclass\AbstractPersonalTranslation;

/**
 * @ORM\Entity
 * @ORM\Table(
 *     uniqueConstraints={@ORM\UniqueConstraint(name="lookup_unique_idx", columns={
 *         "locale", "object_id", "field"
 *     })}
 * )
 */
class CountryTranslation extends AbstractPersonalTranslation {

    /*
     * Convenient constructor
     *
     * @param string $locale
     * @param string $field
     * @param string $value
     */
    /*public function __construct($locale, $field, $value) {
        $this->setLocale($locale);
        $this->setField($field);
        $this->setContent($value);
    }*/
    public function __construct() {
        /*this must be an empty one!*/
    }

/**
 * @ORM\ManyToOne(targetEntity="Country", inversedBy="translations")
 * @ORM\JoinColumn(name="object_id", referencedColumnName="id", onDelete="CASCADE")
 */
protected $object;

}

【讨论】:

    【解决方案2】:

    我的实体国家翻译:

    <?php
    
    namespace Minn\AdsBundle\Entity;
    
    use Doctrine\ORM\Mapping as ORM;
    use Gedmo\Translatable\Entity\MappedSuperclass\AbstractPersonalTranslation;
    
    /**
     * @ORM\Entity
     * @ORM\Table(
     *     uniqueConstraints={@ORM\UniqueConstraint(name="lookup_unique_idx", columns={
     *         "locale", "object_id", "field"
     *     })}
     * )
     */
    class CountryTranslation extends AbstractPersonalTranslation {
    
        /*
         * Convenient constructor
         *
         * @param string $locale
         * @param string $field
         * @param string $value
         */
        /*public function __construct($locale, $field, $value) {
            $this->setLocale($locale);
            $this->setField($field);
            $this->setContent($value);
        }*/
        public function __construct() {
            /*this must be an empty one!*/
        }
    
        /**
         * @ORM\ManyToOne(targetEntity="Country", inversedBy="translations")
         * @ORM\JoinColumn(name="object_id", referencedColumnName="id", onDelete="CASCADE")
         */
        protected $object;
    
        /**
         * @var integer
         */
        private $id;
    
        /**
         * @var string
         */
        private $locale;
    
    /**
     * @var string
     */
     private $field;
    
    /**
     * @var string
     */
    private $content;
    
    
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
    
    /**
     * Set locale
     *
     * @param string $locale
     * @return CountryTranslation
     */
    public function setLocale($locale)
    {
        $this->locale = $locale;
    
        return $this;
    }
    
    /**
     * Get locale
     *
     * @return string 
     */
    public function getLocale()
    {
        return $this->locale;
    }
    
    /**
     * Set field
     *
     * @param string $field
     * @return CountryTranslation
     */
    public function setField($field)
    {
        $this->field = $field;
    
        return $this;
    }
    
    /**
     * Get field
     *
     * @return string 
     */
    public function getField()
    {
        return $this->field;
    }
    
    /**
     * Set content
     *
     * @param string $content
     * @return CountryTranslation
     */
    public function setContent($content)
    {
        $this->content = $content;
    
        return $this;
    }
    
    /**
     * Get content
     *
     * @return string 
     */
    public function getContent()
    {
        return $this->content;
    }
    
    /**
     * Set object
     *
     * @param \Minn\AdsBundle\Entity\Country $object
     * @return CountryTranslation
     */
    public function setObject(\Minn\AdsBundle\Entity\Country $object = null)
    {
        $this->object = $object;
    
        return $this;
    }
    
    /**
     * Get object
     *
     * @return \Minn\AdsBundle\Entity\Country 
     */
    public function getObject()
    {
        return $this->object;
    }
    

    }

    【讨论】:

    • 该实体已被 php app/console generate:doctrine:entity 修改。我已经遇到过这种问题!你会在我的回答中找到正确的实体定义!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    相关资源
    最近更新 更多