изменить имя столбца идентификации по умолчанию в унаследованном (объединенном) классе в symfony - PullRequest
0 голосов
/ 12 марта 2020

Я использовал наследование таблиц классов, чтобы моя сущность "изображение" наследовала от сущности "медиа". эта процедура создает автоматически сгенерированный идентификатор столбца в таблице изображений. Как я могу изменить это имя по умолчанию "id", чтобы установить его "media_id", чтобы столбец изображения имел столбец "media_id" вместо "id"? вот мой код:

namespace App\Entity\OldApp;

use Doctrine\ORM\Mapping as ORM;
use \App\Entity\OldApp\TemplateContent;

/**
 * @ORM\Entity(repositoryClass="App\Repository\OldApp\MediaRepository")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="type", type="string")
 * @ORM\DiscriminatorMap({"media" = "Media", "image" = "Image"})
 */

class Media
{

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

    /**
     * @ORM\Column(name="filename", type="string", length=100, nullable=false)
     */
    private $filename;


    /**
     * @ORM\Column(name="size", type="string", length=30, nullable=false)
     */
    private $size;

    /**
     * @ORM\Column(name="date", type="datetime", nullable=false)
     */
    private $date;

    /**
     * @ORM\Column(name="high", type="boolean", nullable=false)
     */
    private $high = '0';


namespace App\Entity\OldApp;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity(repositoryClass="App\Repository\OldApp\ImageRepository")
*/
class Image extends Media
{



/**
* @ORM\Column(type="string", length=3)
*/
private $extension;


private static $type='image' ;

/**
* @ORM\Column(type="string", length=50)
*/
private $ratio;


/**
* @ORM\Column(type="smallint")
*/
private $height;

/**
* @ORM\Column(type="smallint")
*/
private $width;
}

я пытался добавить @PrimaryKeyJoinColumn(name="person_id") Bellow @ORM \ Entity, но я выдал следующую ошибку

Ошибка

[Семантическая ошибка] Аннотация "@Doctrine \ ORM \ Mapping \ PrimaryKeyJoinColumn" в классе App \ Entity \ OldApp \ Image не существует или не может быть автоматически загружена.

1 Ответ

0 голосов
/ 12 марта 2020
trait MediaTrait
{

    /**
     * @ORM\Column(name="filename", type="string", length=100, nullable=false)
     */
    private $filename;
 // getter //setter
}


/**
 * @ORM\Entity(repositoryClass="App\Repository\OldApp\MediaRepository")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="type", type="string")
 * @ORM\DiscriminatorMap({"media" = "Media", "image" = "Image"})
 */

class Media
{

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

    use MediaTrait;
}

/**
* @ORM\Entity(repositoryClass="App\Repository\OldApp\ImageRepository")
*/
class Image
{
/**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer",name="media_id")
     */
    private $id;

    use MediaTrait;

    // reste of the code 
     ....

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