Как отобразить отношения OneToOne с YAML - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь создать отношение OneToOne между двумя таблицами, используя YAML.Я не уверен, как они должны общаться.

class Games
{

    private $id;


    private $title;


    private $description;


    private $img_link;


    private $website_link;


    private $pegi;


    private $release_date;

    private $requirements;
}

App\Entity\Games:
  type: entity
  repositoryClass: App\Repository\GamesRepository
  table: games
  id:
    id:
      type: integer
      generator:
        strategy: AUTO
  fields:
    title:
      type: string
      length: 255
      nullable: true
    description:
      type: text
      nullable: true
    img_link:
      type: text
      nullable: true
    website_link:
      type: text
      nullable: true
    pegi:
      type: integer
      nullable: true
    release_date:
      type: date
      nullable: true
  OneToOne:
    requirements:
      targetEntity: App\Entity\Requirements
      joinColumn:
        name: requirements_fk
        referencedColumnName: id

class Requirements
{
    private $id;

    private $os_min;

    private $cpu_min;

    private $ram_min;

    private $hdd_min;

    private $gpu_min;

    private $directx_min;

    private $os_req;

    private $cpu_req;

    private $ram_req;

    private $hdd_req;

    private $gpu_req;

    private $directx_req;
}

App\Entity\Requirements:
  type: entity
  repositoryClass: App\Repository\RequirementsRepository
  table: requirements
  id:
    id:
      type: integer
      generator:
        strategy: AUTO
  fields:
    os_min:
      type: string
      length: 255
      nullable: true
    cpu_min:
      type: string
      length: 255
      nullable: true
    ram_min:
      type: integer
      nullable: true
    hdd_min:
      type: integer
      nullable: true
    gpu_min:
      type: string
      lenght: 255
      nullable: true
    directx_min:
      type: integer
      nullable: true
    os_req:
      type: string
      length: 255
      nullable: true
    cpu_req:
      type: string
      length: 255
      nullable: true
    ram_req:
      type: integer
      nullable: true
    hdd_req:
      type: integer
      nullable: true
    gpu_req:
      type: string
      lenght: 255
      nullable: true
    directx_req:
      type: integer
      nullable: true

Я пытаюсь сделать запрос так, но он всегда возвращает ноль, даже если должен возвращать запись.

$temp = $this->getDoctrine()->getRepository(Games::class)->find($id);
$requirements = $temp->getRequirements();

Я не получаю никаких ошибок, поэтому очень сложно попробовать и отладить его.По документации это выглядит нормально.Так что не уверен, где проблема.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Ключевая проблема заключается в том, что OneToOne! = OneToOne в YAML.

0 голосов
/ 01 февраля 2019

Если class Games является вашей сущностью, у вас должен быть метод getRequirements().Попробуйте сгенерировать сущности на основе схемы, если ваши сущности пусты.

https://symfony.com/doc/current/doctrine/reverse_engineering.html

...